Jpp  18.5.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JEvtReweightGSeaGenParameterScan.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author bjung
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------
9 #
10 # Utility script to evaluate gSeaGen reweightings
11 #
12 # ------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 source $JPP_DIR/setenv.sh $JPP_DIR
21 source $JPP_DIR/software/scripts/qlib.sh
22 
23 
25 
26 set_variable: DEBUG REWEIGHTING_DEBUG 2
27 
28 set_variable+ BATCH_PROCESSING REWEIGHTING_BATCH_PROCESSING 1
29 set_variable+ BATCH_LOGGING REWEIGHTING_BATCH_LOGGING 1
30 set_variable: QUEUE_SIZE REWEIGHTING_QUEUE_SIZE 3
31 set_variable: QUEUE_NAME REWEIGHTING_QUEUE_NAME ${TMPDIR:-/tmp}/queue
32 set_variable: JOB_SIZE REWEIGHTING_JOB_SIZE 1
33 
34 set_variable: TEST_TYPE1D REWEIGHTING_TEST_TYPE1D 0
35 set_variable: TEST_TYPE1D_PARAMETERS REWEIGHTING_TEST_TYPE1D_PARAMETERS "0.05 UWCHI2/NDF"
36 set_variable: TEST_TYPE2D REWEIGHTING_TEST_TYPE2D 0
37 set_variable: TEST_TYPE2D_PARAMETERS REWEIGHTING_TEST_TYPE2D_PARAMETERS "0.05 UWCHI2/NDF"
38 
39 set_variable: SCRATCHDIR REWEIGHTING_SCRATCHDIR ${TMPDIR:-/tmp}
40 
41 set_variable: N_TRIGGERED_HITS_RANGE REWEIGHTING_N_TRIGGERED_HITS_RANGE "0 $((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))"
45 
46 set_variable: RECOTYPE REWEIGHTING_RECOTYPE "track"
47 
48 set_variable DEFAULT_OSCPARAMETERS_FILE ${JPP_DATA}/oscillation_parameters_NO.txt
50 set_variable LIVETIME $(( 5 * 365.25 * 24. * 3600. )) # Default livetime of 5 years
52 
53 
54 if do_usage $*; then
55  usage "$script <detector file> <input file>+ <reweighting file> <oscillation probability table> [default oscillation parameter file [oscillation parameter grid file [working directory]]]\n" \
56  "Note that if more than one input file is given all optional parameters need to be specified."
57 fi
58 
59 case $# in
66  set_array INPUT_FILES $2;
68  *) set_variable DETX_FILE ${argv[1]}
69  set_array INPUT_FILES ${argv[2,-7]}
71  set_variable OSCPROBTABLE ${argv[-5]}
74  set_variable LIVETIME ${argv[-2]}
75  set_variable WORKDIR ${argv[-1]}
76 esac
77 
78 
79 # Recursive function to process parameter files
80 #
81 # \param prefix prefix
82 # \param label neutrino label
83 # \param formula reweighting formula
84 # \param parameters_file parameter file
85 #
86 process_parameters() {
87 
88  local prefix=$1
89  local labels=$2
90  local formula=$3
91  local parameters_file=$4
92 
93  shift 4
94 
95  while read line; do
96 
97  if [[ ${line:0:1} == \# ]]; then continue; fi
98 
99  pars=( $(echo $line | cut -d' ' -f1-) )
100 
101  unset parstr
102 
103  for (( i=1; i<=${#pars}; ++i )); do
104  local parstr="${parstr} p$((i-1))=${pars[$i]};"
105  done
106 
107  local reweighting_input=$(printf "\t%s=\"${formula};${parstr}\"" ${(z)labels})
108 
109  if (( $# )); then
110  process_parameters "${prefix}${reweighting_input}" "$@"
111  else
112  printf '%b\n' "${prefix}${reweighting_input}"
113  fi
114  done < ${parameters_file}
115 }
116 
117 
118 # Function to write job identifier to file
119 #
120 # \param output_file output file
121 #
122 write_jobID() {
123 
124  local output_file=$1
125 
126  if (( ${+BATCH_PROCESSING} )); then
127 
128  if [[ -z $EXEC_FILE ]]; then fatal "write_jobID(): Variable EXEC_FILE undefined"; fi
129 
130  if ( is_CCNikhef ); then
131  local jobid=$(qstat -u $USER -f | grep -B1 "${EXEC_FILE:t:r}.${USER}" | grep -oP "Job Id: [0-9]+" | tail -1 | cut -d' ' -f3)
132  else
133  local jobid=$(ps | grep "${EXEC_FILE:t:r}" | tail -1 | tr -s ' ' | cut -d' ' -f2)
134  fi
135 
136  echo ${jobid} >> ${output_file}
137  fi
138 }
139 
140 
141 # Set neutrino labels
142 
143 typeset -A NULABELS
144 set_array NULABELS \
145  -16 "anutau" \
146  -14 "anumu" \
147  -12 "anue" \
148  12 "nue" \
149  14 "numu" \
150  16 "nutau"
151 
152 
153 # Initialise local batch processor
154 
155 if [[ ${BATCH_PROCESSING} == 1 ]]; then
156 
157  if ( is_CCNikhef ); then
158 
159  echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
160 
161  if [[ ${SCRATCHDIR} == "/tmp" ]]; then
162  fatal "Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
163  fi
164 
165  elif ( is_CCLyon ); then
166 
167  fatal "No batch-processing option available yet for CC-Lyon."
168 
169  else
170 
171  echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
172 
173  $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE} "start"
174  fi
175 fi
176 
177 
178 # Retrieve MC files
179 
180 set_array MC_MERGE_FILES $(find ${WORKDIR} -maxdepth 1 -name "*.merge.root")
181 set_variable MC_MERGE_FILELIST ${WORKDIR}/merged.files
182 
183 if (( ${#MC_MERGE_FILES} != 0 )); then
184 
185  echo "----------------------------"
186  printf '%s\n' ${MC_MERGE_FILES[@]}
187  echo "----------------------------"
188 
189  echo "Remove the above regular files? (y/n)"
190 
191  read REMOVE_MC_MERGE_FILES
192 
193  if [[ ${REMOVE_MC_MERGE_FILES} == "y" || ${REMOVE_MC_MERGE_FILES} == "Y" ||
194  ${REMOVE_MC_MERGE_FILES} == "yes" || ${REMOVE_MC_MERGE_FILES} == "Yes" || ${REMOVE_MC_MERGE_FILES} == "YES" ]]; then
195 
196  rm -f ${MC_MERGE_FILES[@]} ${MC_MERGE_FILELIST}
197  else
198  printf '%s\n' ${MC_MERGE_FILES[@]} > ${MC_MERGE_FILELIST}
199  fi
200 fi
201 
202 
203 # Divide into DAQ- and MC-files
204 
205 echo "Dividing into DAQ- and MC-files..."
206 
207 set_variable INPUT_MC_FILELIST ${WORKDIR}/MC.files
208 set_variable INPUT_DAQ_FILELIST ${WORKDIR}/DAQ.files
209 
210 rm -f ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
211 touch ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
212 
213 for INPUT_FILE in ${INPUT_FILES[@]}; do
214 
215  if [[ "$(JPrintHeader -f ${INPUT_FILE} -k simul --)" != " 0" ]]; then # MC-file
216  set_variable OUTPUT_FILE ${INPUT_MC_FILELIST}
217  else # DAQ-files
218  set_variable OUTPUT_FILE ${INPUT_DAQ_FILELIST}
219  fi
220 
221  if [[ ${INPUT_FILE:e} == "files" ]]; then
223  else
224  echo ${INPUT_FILE} >> ${OUTPUT_FILE}
225  fi
226 done
227 
228 set_variable N_MC_FILES $(cat $INPUT_MC_FILELIST | wc -l)
229 set_variable N_DAQ_FILES $(cat $INPUT_DAQ_FILELIST | wc -l)
230 
231 if (( $N_MC_FILES == 0 )); then
232  fatal "No MC input files specified!"
233 fi
234 
235 
236 # Initialize job ID file
237 
238 set_variable JOBID_FILE ${SCRATCHDIR}/reweighting.jobIDs.txt
239 rm -f $JOBID_FILE
240 touch $JOBID_FILE
241 
242 
243 # Merge MC-files
244 
245 if (( ${#MC_MERGE_FILES} == 0 )); then
246 
248 
249  $JPP_DIR/examples/JAAnet/JSortEvt \
250  -f ${INPUT_MC_FILELIST} \
251  -o ${WORKDIR}/\%.merge.root \
252  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
253 
254  timer_stop
255  timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
256 
257  set_array MC_MERGE_FILES $(find ${WORKDIR} -maxdepth 1 -name "*.merge.root")
258 fi
259 
260 
261 if (( N_DAQ_FILES > 0 )); then
262 
263  set_array INPUT_REFERENCE_FILES $(cat ${INPUT_DAQ_FILELIST})
264  set_array INPUT_REWEIGHTING_FILES ${MC_MERGE_FILES[@]}
265 else
266 
267  configure_job \
268  ${SCRATCHDIR}/split_events.job\%.sh 1
269 
270  exec 3> ${EXEC_FILE}
271 
272  cat <<EOF >&3
273 #!/bin/zsh
274 
275 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
276 EOF
277 
278  for MC_MERGE_FILE in ${MC_MERGE_FILES[@]}; do
279 
281  $(JPrintTree -f ${MC_MERGE_FILE} -d ${DEBUG} -- | tr -s ' ' | grep "E Evt" | cut -d' ' -f3)
282  set_variable N1 $(( N_EVENTS / 2 ))
283  set_variable N2 $(( N_EVENTS - N1 ))
284 
285  set_variable INPUT_REFERENCE_FILE ${MC_MERGE_FILE:r}.part1.root
287 
288  cat <<EOF >&3
289 
291 
292 if [[ ! -f ${INPUT_REFERENCE_FILE} || ! -f ${INPUT_REWEIGHTING_FILE} ]]; then
293 
294  rm -f ${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}
295 
296  \${JPP_DIR}/examples/JAAnet/JSplitEvt \
297  -f ${MC_MERGE_FILE} \
298  -o "${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}" \
299  -d ${DEBUG} --
300 fi
301 
302 timer_stop
303 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
304 
305 ${SUBMIT_JOB+rm -f ${EXEC_FILE}}
306 EOF
307 
308  set_array INPUT_REFERENCE_FILES \
309  ${INPUT_REFERENCE_FILES[@]} ${INPUT_REFERENCE_FILE}
310  set_array INPUT_REWEIGHTING_FILES \
311  ${INPUT_REWEIGHTING_FILES[@]} ${INPUT_REWEIGHTING_FILE}
312  done
313 
314  exec 3>&-
315 
316  submit_job \
317  ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR}}}
318 
319  write_jobID ${JOBID_FILE}
320 
322 fi
323 
324 
325 # Process reference files and create histogram comparison steering file
326 
327 set_variable STEERING_FILE ${WORKDIR}/steeringfile.txt
328 set_variable REFERENCE_POSTFIT_FILE ${WORKDIR}/reference.postfit.root
329 set_variable REFERENCE_POSTFIT_FILE_SCALED ${REFERENCE_POSTFIT_FILE:r}.scaled.root
330 
331 if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} ); then
332 
333  rm -f $STEERING_FILE
334  touch $STEERING_FILE
335 
336  set_array PREREQUISITES $(cat $JOBID_FILE)
337 
338  configure_job \
339  ${SCRATCHDIR}/${REFERENCE_POSTFIT_FILE:t:r}.job\%.sh 1
340 
341  exec 3> ${EXEC_FILE}
342 
343  cat <<EOF >&3
344 #!/bin/zsh
345 
346 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
347 
348 timer_start
349 
350 JAAPostfit \\
351  -f "${INPUT_REFERENCE_FILES[*]}" \\
352  -o ${REFERENCE_POSTFIT_FILE} \\
353  -a ${DETX_FILE} \\
354  -P ${OSCPROBTABLE} \\
356  -@atmospheric="${(k)NULABELS}" \\
357  -%energyRange="${ENERGY_RANGE}" \\
358  -%coszenithRange="${COSTH_RANGE}" \\
359  -%containmentVolume="${CONTAINMENT_VOLUME}" \\
360  -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
361  -R ${RECOTYPE} -W \\
362  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
363 
364 JScale1D \\
365  -f ${REFERENCE_POSTFIT_FILE}:. \\
366  -o ${REFERENCE_POSTFIT_FILE_SCALED} \\
367  -F ${LIVETIME} \\
368  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
369 
370 mv ${REFERENCE_POSTFIT_FILE_SCALED} ${REFERENCE_POSTFIT_FILE}
371 
372 timer_stop
373 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
374 
375 set_array NAMES \$(JPrintName -f ${REFERENCE_POSTFIT_FILE}:.)
376 
377 for NAME in \${NAMES[@]}; do
378 
380  \$(JPrintResult \
381  -f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$ \
382  -F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
383  -O "%f" --)
384 
385  if [[ \${NAME} != "META" && \${NAME} != "TObject" ]]; then
386 
387  if (( BINFRAC > 1.0 )); then
388  warning "Cannot perform comparison test for histogram \${NAME} with >2 dimensions; skip."
389  elif (( BINFRAC < 1.0 )); then
390  echo "\${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
391  else
392  echo "\${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
393  fi
394  fi
395 done
396 
397 rm -f ${EXEC_FILE}
398 EOF
399 
400  exec 3>&-
401 
402  submit_job \
403  ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} $PREREQUISITES[@]}}
404 
405  write_jobID ${JOBID_FILE}
406 
408 fi
409 
410 
411 # Process MC-files with standard weights
412 
413 set_variable DEFAULT_POSTFIT_FILE ${WORKDIR}/default.postfit.root
414 set_variable DEFAULT_COMPARISON_FILE ${DEFAULT_POSTFIT_FILE:r}.comparison.root
415 
416 if ( ! reuse_file ${DEFAULT_COMPARISON_FILE} ); then
417 
418  echo "Submitting default histogram comparison jobs"
419 
420  configure_job \
421  ${SCRATCHDIR}/${DEFAULT_COMPARISON_FILE:t:r}.job\%.sh 1
422 
423  exec 3> ${EXEC_FILE}
424 
425  cat <<EOF >&3
426 #!/bin/zsh
427 
428 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
429 
430 EOF
431 
432  unset DEFAULT_POSTFIT_FILES
433 
434  for (( i=1; i<=${#INPUT_REWEIGHTING_FILES}; ++i )); do
435 
436  set_variable INPUT_FILE ${INPUT_REWEIGHTING_FILES[$i]}
437  set_variable POSTFIT_FILE ${INPUT_FILE:r}.postfit.root
438  set_variable POSTFIT_FILE_SCALED ${POSTFIT_FILE:r}.scaled.root
439 
440  rm -f ${POSTFIT_FILE} ${COMPARISON_FILE}
441 
442  cat <<EOF >&3
443 timer_start
444 
445 JAAPostfit \\
446  -f ${INPUT_FILE} \\
447  -o ${POSTFIT_FILE} \\
448  -a ${DETX_FILE} \\
449  -P ${OSCPROBTABLE} \\
451  -@atmospheric="${(k)NULABELS}" \\
452  -%energyRange="${ENERGY_RANGE}" \\
453  -%coszenithRange="${COSTH_RANGE}" \\
454  -%containmentVolume="${CONTAINMENT_VOLUME}" \\
455  -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
456  -R ${RECOTYPE} -W \\
457  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE}}
458 
459 JScale1D \\
460  -f ${POSTFIT_FILE}:. \\
461  -o ${POSTFIT_FILE_SCALED} \\
462  -F ${LIVETIME} \\
463  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
464 
465 mv ${POSTFIT_FILE_SCALED} ${POSTFIT_FILE}
466 
467 timer_stop
468 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
469 EOF
470 
471  set_array DEFAULT_POSTFIT_FILES \
472  ${DEFAULT_POSTFIT_FILES[@]} ${POSTFIT_FILE}
473  done
474 
475  cat <<EOF >&3
476 
477 hadd -v 0 -f ${DEFAULT_POSTFIT_FILE} ${DEFAULT_POSTFIT_FILES[@]}
478 
479 timer_start
480 
481 JZebraMantis \\
482  -a ${REFERENCE_POSTFIT_FILE} \\
483  -b ${DEFAULT_POSTFIT_FILE} \\
484  -s ${STEERING_FILE} \\
485  -o ${DEFAULT_COMPARISON_FILE} \\
486  -t ${DEFAULT_COMPARISON_FILE:r}.txt \\
487  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
488 
489 timer_stop
490 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
491 
492 rm -f ${EXEC_FILE}
493 EOF
494 
495  exec 3>&-
496 
497  submit_job \
498  ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${REFERENCE_POSTFIT_JOBID}}}
499 
500  write_jobID ${JOBID_FILE}
501 
502  echo ${EXEC_FILE}
503 
505 fi
506 
507 
508 # Parse reweighting inputs
509 
510 unset NUTYPES
511 unset PARINPUTS
512 
513 while IFS=$'\t' read TYPES FORMULA PARAMETER_FILE; do
514 
515  for TYPE in ${(z)TYPES}; do
516  set_array LABELS \
517  ${LABELS[@]} ${NULABELS[$TYPE]}
518  done
519 
520  set_array NUTYPES \
521  ${NUTYPES[@]} ${TYPES[@]}
522 
523  set_array PARINPUTS \
524  ${PARINPUTS[@]} "${LABELS}" "${FORMULA}" "${PARAMETER_FILE}"
525 
527 
528 set_variable PARINPUTS_FILE ${SCRATCHDIR}/parametersets.${RANDOM}.txt
529 
530 process_parameters ' ' ${PARINPUTS[@]} > ${PARINPUTS_FILE}
531 
532 
533 # Compile oscillation parameters files
534 
535 if [[ ! -z $OSCPARAMETERS_GRID_FILE ]]; then
536 
537  $JPP_DIR/examples/JOscProb/JWriteOscParametersGrid \
539  -o ${WORKDIR}/oscillation_parameters.\%.txt \
540  -w '%' \
541  -d ${DEBUG} --
542 fi
543 
544 set_variable OSCPARAMETERS_FILE_LIST ${WORKDIR}/oscillation_parameters.files
545 
546 echo ${DEFAULT_OSCPARAMETERS_FILE} > ${OSCPARAMETERS_FILE_LIST}
547 ls ${WORKDIR}/oscillation_parameters.*.txt >> ${OSCPARAMETERS_FILE_LIST}
548 
549 
550 # Process MC-files with redefined weights
551 
552 set_array PREREQUISITES $(cat $JOBID_FILE)
553 
554 set_variable META_FILE ${WORKDIR}/comparisonResults.meta.txt
555 set_variable JOBID_FILE ${WORKDIR}/reweighting.jobIDs.txt
556 
557 rm -f ${META_FILE} ${JOBID_FILE}
558 
559 integer n=1
560 
561 while read -u 3 LINE; do
562 
563  echo "Submitting reweighting job ${n}"
564 
565  IFS=$'\t' read -r -A PARINPUTS <<< "${LINE}"
566 
567  while read -u 4 OSCPARAMETERS_FILE; do
568 
569  set_variable REWEIGHTED_POSTFIT_FILE ${WORKDIR}/reweighting.${n}.postfit.root
570  set_variable REWEIGHTED_COMPARISON_FILE ${REWEIGHTED_POSTFIT_FILE:r}.comparison.root
571 
572  configure_job \
573  ${SCRATCHDIR}/reweighting.job\%.sh ${JOB_SIZE}
574 
575  if (( ${+START_JOB} )); then
576 
577  exec 5> ${EXEC_FILE}
578 
579  cat <<EOF >&5
580 #!/bin/zsh
581 
582 source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
583 EOF
584  fi
585 
586  for (( j=1; j<=${#INPUT_REWEIGHTING_FILES}; ++j )); do
587 
588  set_variable INPUT_FILE ${INPUT_REWEIGHTING_FILES[$j]}
589  set_variable REWEIGHTED_FILE ${INPUT_FILE:r}.reweighting.${n}.root
590  set_variable POSTFIT_FILE ${REWEIGHTED_FILE:r}.postfit.root
591  set_variable POSTFIT_FILE_SCALED ${POSTFIT_FILE:r}.scaled.root
592 
593  set_array POSTFIT_FILES \
594  ${POSTFIT_FILES[@]} ${POSTFIT_FILE}
595 
596  cat <<EOF >&5
597 
598 set_array PRIMARIES \\
599  \$(JPrintHeader -f ${INPUT_FILE} -k primary -- | cut -d'=' -f2)
600 
601 set_array PRIMARIES \\
602  \${PRIMARIES[@]} \\
603  \$(JPrintHeader -f ${INPUT_FILE} -k flux -- | cut -d' ' -f3)
604 
605 unset DO_REWEIGHTING
606 
607 for PRIMARY in \${PRIMARIES[@]}; do
608  if [[ "${NUTYPES[@]}" =~ "\${PRIMARY}" ]]; then
609  set_variable DO_REWEIGHTING
610  break
611  fi
612 done
613 
614 if (( \${+DO_REWEIGHTING} )); then
615 
616  timer_start
617 
618  JEvtReweightGSeaGen \\
619  -f ${INPUT_FILE} \\
620  -o ${REWEIGHTED_FILE} \\
621  -P ${OSCPROBTABLE} \\
622  -@ ${OSCPARAMETERS_FILE} \\
623 $(printf ' -#%s \\\n' ${PARINPUTS[@]})
624  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
625 
626  timer_stop
627  timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
628 
629  timer_start
630 
631  JAAPostfit \\
632  -f ${REWEIGHTED_FILE} \\
633  -o ${POSTFIT_FILE} \\
634  -a ${DETX_FILE} \\
635  -P ${OSCPROBTABLE} \\
636  -%energyRange="${ENERGY_RANGE}" \\
637  -%coszenithRange="${COSTH_RANGE}" \\
638  -%containmentVolume="${CONTAINMENT_VOLUME}" \\
639  -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
640  -R ${RECOTYPE} -W \\
641  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
642 
643  JScale1D \\
644  -f ${POSTFIT_FILE}:. \\
645  -o ${POSTFIT_FILE_SCALED} \\
646  -F ${LIVETIME} \\
647  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
648 
649  mv ${POSTFIT_FILE_SCALED} ${POSTFIT_FILE}
650 
651  timer_stop
652  timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
653 
654 else # This file does not correspond to any of the given primaries
655 
656  ln -fv ${INPUT_FILE} ${REWEIGHTED_FILE}
657  ln -fv ${INPUT_FILE:r}.postfit.root ${POSTFIT_FILE}
658 fi
659 
660 rm -f ${REWEIGHTED_FILE}
661 EOF
662  done
663 
664  cat <<EOF >&5
665 
666 hadd -v 0 -f ${REWEIGHTED_POSTFIT_FILE} ${POSTFIT_FILES[@]}
667 
668 timer_start
669 
670 JZebraMantis \\
671  -a ${REFERENCE_POSTFIT_FILE} \\
672  -b ${REWEIGHTED_POSTFIT_FILE} \\
673  -s ${STEERING_FILE} \\
674  -o ${REWEIGHTED_COMPARISON_FILE} \\
675  -t ${REWEIGHTED_COMPARISON_FILE:r}.txt \\
676  -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
677 
678 timer_stop
679 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
680 
681 ${SUBMIT_JOB+#rm -f ${EXEC_FILE}}
682 EOF
683 
684  if (( ${+SUBMIT_JOB} )); then
685 
686  exec 5>&-
687 
688  submit_job \
689  ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${QUEUE_NAME} ${SCRATCHDIR} ${PREREQUISITES[@]}}}
690 
691  write_jobID ${JOBID_FILE}
692 
693  unset POSTFIT_FILES
694  fi
695 
696  echo "${REWEIGHTED_COMPARISON_FILE:r}.txt\t${OSCPARAMETERS_FILE}\t${PARINPUTS[*]}" >> ${META_FILE}
697 
698  (( ++n ))
699 
700  done 4< ${OSCPARAMETERS_FILE_LIST}
701 
702 done 3< ${PARINPUTS_FILE}
703 
704 rm -f ${PARINPUTS_FILE}
705 
707 
708 set_variable IFS ${IFS0}
&set_variable TYPE
Definition: getLs.sh:22
then rm f $STEERING_FILE touch $STEERING_FILE set_array PREREQUISITES(cat $JOBID_FILE) configure_job $
data_type w[N+1][M+1]
Definition: JPolint.hh:867
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
Definition: JTuneHV.sh:36
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
Definition: JDataQuality.sh:19
version
Definition: JEditTuneHV.sh:5
&set_variable OSCPROBTABLE
then JLigier sh continue fi cat
Definition: JDAQDriver.sh:51
then echo Enter input within $TIMEOUT_S seconds echo n User name
Definition: JCookie.sh:42
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
usr share Modules init zsh export TMPDIR
exit
Definition: JPizza.sh:36
data_type r[M+1]
Definition: JPolint.hh:868
then usage $script< input file > nFor possible input files
Definition: JMechanics.sh:23
&set_variable PARAMETER_FILE
then
Definition: datalogs.sh:31
reset_job_config()
Definition: qlib.sh:164
do set_variable MC_MERGE_FILE
&set_variable DEFAULT_OSCPARAMETERS_FILE
&set_variable PRIMARY
Definition: JMuonPostfit.sh:46
then fatal Wrong number of arguments fi JConvertDetectorFormat a o
const JPolynome f1(1.0, 2.0, 3.0)
Function.
const int n
Definition: JPolint.hh:786
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 $
then rm
Definition: sftpput.zsh:30
do set_variable BINFRAC(JPrintResult-f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$-F"GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))"-O"%f"--) if[[\$
then JCalibrateToT a
Definition: JTuneHV.sh:113
set_variable DETX_FILE
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Q DAQ
Definition: JDataQuality.sh:59
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
then awk F
* usage
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
set_variable INPUT_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
then usage $script< input file >[option[primary[working directory]]] nWhere option can be LINE
Definition: JMuonPostfit.sh:40
do sput $STRING $FLOOR sget MODULE INPUT_FILES
Definition: JCanberra.sh:79
&set_variable FORMULA
part1 root set_variable INPUT_REWEIGHTING_FILE
then JCookie sh JDataQuality D $DETECTOR_ID R
Definition: JDataQuality.sh:41
do grep(chi2\[.\]\|gradient\)" $INPUT_FILE > $WORKDIR/stage.txt awk 'BEGIN
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
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
Definition: JCanberra.sh:48
&set_variable OSCPARAMETERS_GRID_FILE
then fatal Wrong number of arguments fi set_variable ARCHIVE $argv[1] set_variable VERSION $argv[2] set_variable DIR $argv[3] source JAcousticsToolkit sh set_variable DETECTOR $DIR $ACOUSTICS_DETECTOR if[[!-f $DETECTOR]]
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.
Definition: JPolynome3D.cc:23
int j
Definition: JPolint.hh:792
fi set_array MC_MERGE_FILES(find ${WORKDIR}-maxdepth 1-name"*.merge.root") if(($
data_type v[N+1][M+1]
Definition: JPolint.hh:866
double u[N+1]
Definition: JPolint.hh:865
then echo
Definition: JQAQC.sh:96
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
&set_variable LIVETIME
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
set_variable REWEIGHTING_INPUTS_FILE
then $DIR JPlotNPE PDG P
Definition: JPlotNPE-PDG.sh:62
esac done
Definition: JAddHDE.sh:21
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
elif(($#==3))
do alias $i