Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
JEvtReweightParameterScan.sh
Go to the documentation of this file.
1#!/bin/zsh
2#
3# \author bjung
4#
5version=1.0
6script=${0##*/}
7
8# ------------------------------------------------------------------------------------------
9#
10# Utility script to evaluate gSeaGen reweightings
11#
12# ------------------------------------------------------------------------------------------
13
14
15if [ -z $JPP_DIR ]; then
16 echo "Variable JPP_DIR undefined."
17 exit
18fi
19
20source $JPP_DIR/setenv.sh $JPP_DIR
21source $JPP_DIR/software/scripts/qlib.sh
22
23
24set_variable IFS0 ${IFS}
25
26set_variable: DEBUG REWEIGHTING_DEBUG 2
27
28set_variable+ BATCH_PROCESSING REWEIGHTING_BATCH_PROCESSING 1
29set_variable+ BATCH_LOGGING REWEIGHTING_BATCH_LOGGING 1
30set_variable: BATCH_QUEUE_SIZE REWEIGHTING_BATCH_QUEUE_SIZE 3
31set_variable: BATCH_QUEUE_NAME REWEIGHTING_BATCH_QUEUE_NAME ${TMPDIR:-/tmp}/queue
32set_variable: BATCH_JOB_SIZE REWEIGHTING_BATCH_JOB_SIZE 1
33
34set_variable: TEST_TYPE1D REWEIGHTING_TEST_TYPE1D 0
35set_variable: TEST_TYPE1D_PARAMETERS REWEIGHTING_TEST_TYPE1D_PARAMETERS "0.05 UWCHI2/NDF"
36set_variable: TEST_TYPE2D REWEIGHTING_TEST_TYPE2D 0
37set_variable: TEST_TYPE2D_PARAMETERS REWEIGHTING_TEST_TYPE2D_PARAMETERS "0.05 UWCHI2/NDF"
38
39set_variable: N_TRIGGERED_HITS_RANGE REWEIGHTING_N_TRIGGERED_HITS_RANGE "0 $((2**31))"
40set_variable: CONTAINMENT_VOLUME REWEIGHTING_CONTAINMENT_VOLUME "0.0 0.0 $((2**31)) -$((2**31)) $((2**31))"
41set_variable: COSTH_RANGE REWEIGHTING_COSTH_RANGE "-1.0 1.0"
42set_variable: ENERGY_RANGE REWEIGHTING_ENERGY_RANGE "0.0 $((2.0**31))"
43
44set_variable: RECOTYPE REWEIGHTING_RECOTYPE "track"
45set_variable: LIVETIME REWEIGHTING_LIVETIME $(( 5 * 365.25 * 24. * 3600. )) # Default livetime of 5 years
46
47set_variable: POSTFIT_APP REWEIGHTING_POSTFIT_APP JAAPostfit
48
49set_variable DEFAULT_OSCPARAMETERS_FILE ${JPP_DATA}/oscillation_parameters_NO.txt
50set_variable OSCPARAMETERS_GRID_FILE ""
51set_variable WORKDIR ${TMPDIR:-/tmp}
52
53
54if do_usage $*; then
55 usage "$script <detector file> <input file>+ <weight factor file list> [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."
57fi
58
59case $# in
60 7) set_variable WORKDIR $7;&
61 6) set_variable OSCPARAMETERS_GRID_FILE $6;&
62 5) set_variable DEFAULT_OSCPARAMETERS_FILE $5;&
63 4) set_variable OSCPROBTABLE $4;
64 set_variable WEIGHT_FACTOR_FILELIST $3;
65 set_array INPUT_FILES $2;
66 set_variable DETX_FILE $1;;
67 *) set_variable DETX_FILE ${argv[1]}
68 set_array INPUT_FILES ${argv[2,-6]}
69 set_variable REWEIGHTING_INPUTS_FILE ${argv[-5]}
70 set_variable OSCPROBTABLE ${argv[-4]}
71 set_variable DEFAULT_OSCPARAMETERS_FILE ${argv[-3]}
72 set_variable OSCPARAMETERS_GRID_FILE ${argv[-2]}
73 set_variable WORKDIR ${argv[-1]}
74esac
75
76
77# Function to write job identifier to file
78#
79# \param output_file output file
80#
81write_jobID() {
82
83 local output_file=$1
84
85 if (( ${+BATCH_PROCESSING} )); then
86
87 if [[ -z $EXEC_FILE ]]; then fatal "write_jobID(): Variable EXEC_FILE undefined"; fi
88
89 if ( is_CCNikhef ); then
90 local jobid=$(qstat -u $USER -f | grep -B1 "${EXEC_FILE:t:r}.${USER}" | grep -oP "Job Id: [0-9]+" | tail -1 | cut -d' ' -f3)
91 else
92 local jobid=$(ps | grep "${EXEC_FILE:t:r}" | tail -1 | tr -s ' ' | cut -d' ' -f2)
93 fi
94
95 echo ${jobid} >> ${output_file}
96 fi
97}
98
99
100# Set neutrino labels
101
102typeset -A NULABELS
103set_array NULABELS \
104 -16 "anutau" \
105 -14 "anumu" \
106 -12 "anue" \
107 12 "nue" \
108 14 "numu" \
109 16 "nutau"
110
111
112# Initialise local batch processor
113
114if [[ ${BATCH_PROCESSING} == 1 ]]; then
115
116 if ( is_CCNikhef ); then
117
118 notice "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${BATCH_QUEUE_NAME}..."
119
120 if [[ ${WORKDIR} == "/tmp" ]]; then
121 fatal "Please specify a valid directory for local \'scratch\' files other than \"${TMPDIR:-/tmp}\""
122 fi
123
124 elif ( is_CCLyon ); then
125
126 fatal "No batch-processing option available yet for CC-Lyon."
127
128 else
129
130 notice "Submitting reweighting and histogram comparison jobs to local batch queue: ${BATCH_QUEUE_NAME}..."
131
132 $JPP_DIR/examples/scripts/mkqueue.sh ${BATCH_QUEUE_NAME} ${BATCH_QUEUE_SIZE} "start"
133 fi
134fi
135
136
137# Initialize job ID file
138
139set_variable JOBID_FILE ${WORKDIR}/reweighting.jobIDs.txt
140rm -f $JOBID_FILE
141touch $JOBID_FILE
142
143
144# Compile oscillation parameters files
145
146if [[ -s $OSCPARAMETERS_GRID_FILE ]]; then
147
148 $JPP_DIR/examples/JOscProb/JWriteOscParametersGrid \
149 -@ ${OSCPARAMETERS_GRID_FILE} \
150 -o ${WORKDIR}/oscillation_parameters.\%.txt \
151 -w '%' \
152 -d ${DEBUG} --!
153
154 CHECK_EXIT_CODE
155fi
156
157set_variable OSCPARAMETERS_FILE_LIST ${WORKDIR}/oscillation_parameters.files
158
159echo ${DEFAULT_OSCPARAMETERS_FILE} > ${OSCPARAMETERS_FILE_LIST}
160ls ${WORKDIR}/oscillation_parameters.*.txt >> ${OSCPARAMETERS_FILE_LIST}
161
162
163# Retrieve MC files
164
165set_array MC_MERGE_FILES $(find ${WORKDIR} -maxdepth 1 -name "*merge.root")
166
167if (( ${#MC_MERGE_FILES} != 0 )); then
168
169 echo "----------------------------"
170 printf '%s\n' ${MC_MERGE_FILES[@]}
171 echo "----------------------------"
172
173 echo "Remove the above regular files? (y/n)"
174
175 read REMOVE_MC_MERGE_FILES
176
177 if [[ ${REMOVE_MC_MERGE_FILES} == "y" || ${REMOVE_MC_MERGE_FILES} == "Y" ||
178 ${REMOVE_MC_MERGE_FILES} == "yes" || ${REMOVE_MC_MERGE_FILES} == "Yes" || ${REMOVE_MC_MERGE_FILES} == "YES" ]]; then
179 rm -f ${MC_MERGE_FILES[@]}
180 fi
181fi
182
183
184# Divide into DAQ- and MC-files
185
186notice "Dividing into DAQ- and MC-files..."
187
188set_variable INPUT_MC_FILELIST ${WORKDIR}/MC.files
189set_variable INPUT_DAQ_FILELIST ${WORKDIR}/DAQ.files
190
191rm -f ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
192touch ${INPUT_MC_FILELIST} ${INPUT_DAQ_FILELIST}
193
194for INPUT_FILE in ${INPUT_FILES[@]}; do
195
196 if [[ "$(JPrintHeader -f ${INPUT_FILE} -k simul --)" != " 0" ]]; then # MC-file
197 set_variable OUTPUT_FILE ${INPUT_MC_FILELIST}
198 else # DAQ-files
199 set_variable OUTPUT_FILE ${INPUT_DAQ_FILELIST}
200 fi
201
202 if [[ ${INPUT_FILE:e} == "files" ]]; then
203 cat ${INPUT_FILE} >> ${OUTPUT_FILE}
204 else
205 echo ${INPUT_FILE} >> ${OUTPUT_FILE}
206 fi
207done
208
209set_variable N_MC_FILES $(cat $INPUT_MC_FILELIST | wc -l)
210set_variable N_DAQ_FILES $(cat $INPUT_DAQ_FILELIST | wc -l)
211
212if (( $N_MC_FILES == 0 )); then
213 fatal "No MC input files specified!"
214fi
215
216
217# Merge MC-files
218
219if (( ${#MC_MERGE_FILES} == 0 )); then
220
221 timer_start
222
223 $JPP_DIR/examples/JAAnet/JSortEvt \
224 -f ${INPUT_MC_FILELIST} \
225 -o ${WORKDIR}/\%.merge.root \
226 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
227
228 CHECK_EXIT_CODE
229
230 timer_stop
231 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
232
233 set_array MC_MERGE_FILES $(find ${WORKDIR} -maxdepth 1 -name "*merge.root")
234fi
235
236
237if (( N_DAQ_FILES > 0 )); then
238
239 set_array INPUT_REFERENCE_FILES $(cat ${INPUT_DAQ_FILELIST})
240 set_array INPUT_REWEIGHTING_FILES ${MC_MERGE_FILES[@]}
241else
242
243 configure_job \
244 ${WORKDIR}/split_events.job\%.sh 1
245
246 exec 3> ${EXEC_FILE}
247
248 cat <<EOF >&3
249#!/bin/zsh
250
251source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
252EOF
253
254 for MC_MERGE_FILE in ${MC_MERGE_FILES[@]}; do
255
256 set_variable N_EVENTS \
257 $(JPrintTree -f ${MC_MERGE_FILE} -@ "type = Evt" -k number_of_entries)
258 set_variable N1 $(( N_EVENTS / 2 ))
259 set_variable N2 $(( N_EVENTS - N1 ))
260
261 set_variable INPUT_REFERENCE_FILE ${MC_MERGE_FILE:r}.part1.root
262 set_variable INPUT_REWEIGHTING_FILE ${MC_MERGE_FILE:r}.part2.root
263
264 cat <<EOF >&3
265
266timer_start
267
268if [[ ! -f ${INPUT_REFERENCE_FILE} || ! -f ${INPUT_REWEIGHTING_FILE} ]]; then
269
270 rm -f ${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}
271
272 \${JPP_DIR}/examples/JAAnet/JSplitEvt \
273 -f ${MC_MERGE_FILE} \
274 -o "${INPUT_REFERENCE_FILE} ${INPUT_REWEIGHTING_FILE}" \
275 -d ${DEBUG} --!
276fi
277
278timer_stop
279timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
280
281${SUBMIT_JOB+rm -f ${EXEC_FILE}}
282EOF
283
284 set_array INPUT_REFERENCE_FILES \
285 ${INPUT_REFERENCE_FILES[@]} ${INPUT_REFERENCE_FILE}
286 set_array INPUT_REWEIGHTING_FILES \
287 ${INPUT_REWEIGHTING_FILES[@]} ${INPUT_REWEIGHTING_FILE}
288 done
289
290 exec 3>&-
291
292 submit_job \
293 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${BATCH_QUEUE_NAME} ${WORKDIR}}}
294
295 write_jobID ${JOBID_FILE}
296
297 reset_job_config
298fi
299
300
301# Process reference files and create histogram comparison steering file
302
303set_variable STEERING_FILE ${WORKDIR}/steeringfile.txt
304set_variable REFERENCE_POSTFIT_FILE ${WORKDIR}/reference.postfit.root
305set_variable REFERENCE_POSTFIT_FILE_SCALED ${REFERENCE_POSTFIT_FILE:r}.scaled.root
306
307if ( ! reuse_file ${REFERENCE_POSTFIT_FILE} ); then
308
309 rm -f $STEERING_FILE
310 touch $STEERING_FILE
311
312 set_array PREREQUISITES $(cat $JOBID_FILE)
313
314 configure_job \
315 ${WORKDIR}/${REFERENCE_POSTFIT_FILE:t:r}.job\%.sh 1
316
317 exec 3> ${EXEC_FILE}
318
319 cat <<EOF >&3
320#!/bin/zsh
321
322source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
323
324timer_start
325
326${POSTFIT_APP} \\
327 -f "${INPUT_REFERENCE_FILES[*]}" \\
328 -o ${REFERENCE_POSTFIT_FILE} \\
329 -a ${DETX_FILE} \\
330 -P ${OSCPROBTABLE} \\
331 -# ${DEFAULT_OSCPARAMETERS_FILE} \\
332 -@ "${(k)NULABELS}; 3;" \\
333 -%energyRange="${ENERGY_RANGE}" \\
334 -%coszenithRange="${COSTH_RANGE}" \\
335 -%containmentVolume="${CONTAINMENT_VOLUME}" \\
336 -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
337 -R ${RECOTYPE} -W \\
338 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
339
340CHECK_EXIT_CODE
341
342JScale1D \\
343 -f ${REFERENCE_POSTFIT_FILE}:. \\
344 -o ${REFERENCE_POSTFIT_FILE_SCALED} \\
345 -F ${LIVETIME} \\
346 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
347
348CHECK_EXIT_CODE
349
350mv ${REFERENCE_POSTFIT_FILE_SCALED} ${REFERENCE_POSTFIT_FILE}
351
352timer_stop
353timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
354
355set_array NAMES \$(JPrintName -f ${REFERENCE_POSTFIT_FILE}:.)
356
357for NAME in \${NAMES[@]}; do
358
359 set_variable BINFRAC \
360 \$(JPrintResult \
361 -f ${REFERENCE_POSTFIT_FILE}:^\${NAME}\$ \
362 -F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
363 -O "%f" --)
364
365 if [[ \${NAME} != "META" && \${NAME} != "TObject" ]]; then
366
367 if (( BINFRAC > 1.0 )); then
368 warning "Cannot perform comparison test for histogram \${NAME} with >2 dimensions; skip."
369 elif (( BINFRAC < 1.0 )); then
370 echo "\${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
371 else
372 echo "\${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
373 fi
374 fi
375done
376
377rm -f ${EXEC_FILE}
378EOF
379
380 exec 3>&-
381
382 submit_job \
383 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${BATCH_QUEUE_NAME} ${WORKDIR} $PREREQUISITES[@]}}
384
385 write_jobID ${JOBID_FILE}
386
387 reset_job_config
388fi
389
390
391# Process MC-files with standard weights
392
393set_variable DEFAULT_POSTFIT_FILE ${WORKDIR}/default.postfit.root
394set_variable DEFAULT_COMPARISON_FILE ${DEFAULT_POSTFIT_FILE:r}.comparison.root
395
396if ( ! reuse_file ${DEFAULT_COMPARISON_FILE} ); then
397
398 notice "Submitting default histogram comparison jobs"
399
400 configure_job \
401 ${WORKDIR}/${DEFAULT_COMPARISON_FILE:t:r}.job\%.sh 1
402
403 exec 3> ${EXEC_FILE}
404
405 cat <<EOF >&3
406#!/bin/zsh
407
408source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
409
410EOF
411
412 unset DEFAULT_POSTFIT_FILES
413
414 for (( i=1; i<=${#INPUT_REWEIGHTING_FILES}; ++i )); do
415
416 set_variable INPUT_FILE ${INPUT_REWEIGHTING_FILES[$i]}
417 set_variable POSTFIT_FILE ${INPUT_FILE:r}.postfit.root
418 set_variable POSTFIT_FILE_SCALED ${POSTFIT_FILE:r}.scaled.root
419
420 rm -f ${POSTFIT_FILE} ${COMPARISON_FILE}
421
422 cat <<EOF >&3
423timer_start
424
425${POSTFIT_APP} \\
426 -f ${INPUT_FILE} \\
427 -o ${POSTFIT_FILE} \\
428 -a ${DETX_FILE} \\
429 -P ${OSCPROBTABLE} \\
430 -# ${DEFAULT_OSCPARAMETERS_FILE} \\
431 -@ "${(k)NULABELS}; 3;" \\
432 -%energyRange="${ENERGY_RANGE}" \\
433 -%coszenithRange="${COSTH_RANGE}" \\
434 -%containmentVolume="${CONTAINMENT_VOLUME}" \\
435 -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
436 -R ${RECOTYPE} -W \\
437 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE}}
438
439CHECK_EXIT_CODE
440
441JScale1D \\
442 -f ${POSTFIT_FILE}:. \\
443 -o ${POSTFIT_FILE_SCALED} \\
444 -F ${LIVETIME} \\
445 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
446
447CHECK_EXIT_CODE
448
449mv ${POSTFIT_FILE_SCALED} ${POSTFIT_FILE}
450
451timer_stop
452timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
453EOF
454
455 set_array DEFAULT_POSTFIT_FILES \
456 ${DEFAULT_POSTFIT_FILES[@]} ${POSTFIT_FILE}
457 done
458
459 cat <<EOF >&3
460
461hadd -v 0 -f ${DEFAULT_POSTFIT_FILE} ${DEFAULT_POSTFIT_FILES[@]}
462
463timer_start
464
465JZebraMantis \\
466 -a ${REFERENCE_POSTFIT_FILE} \\
467 -b ${DEFAULT_POSTFIT_FILE} \\
468 -s ${STEERING_FILE} \\
469 -o ${DEFAULT_COMPARISON_FILE} \\
470 -t ${DEFAULT_COMPARISON_FILE:r}.txt \\
471 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
472
473CHECK_EXIT_CODE
474
475timer_stop
476timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
477
478rm -f ${EXEC_FILE}
479EOF
480
481 exec 3>&-
482
483 submit_job \
484 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${BATCH_QUEUE_NAME} ${WORKDIR} ${REFERENCE_POSTFIT_JOBID}}}
485
486 write_jobID ${JOBID_FILE}
487
488 reset_job_config
489fi
490
491
492# Process MC-files with redefined weights
493
494set_array PREREQUISITES $(cat $JOBID_FILE)
495
496set_variable META_FILE ${WORKDIR}/comparisonResults.meta.txt
497set_variable JOBID_FILE ${WORKDIR}/reweighting.jobIDs.txt
498
499rm -f ${META_FILE} ${JOBID_FILE}
500
501integer n=1
502
503while read -u 3 WEIGHT_FACTOR_FILE; do
504
505 notice "Submitting reweighting job ${n}"
506
507 while read -u 4 OSCPARAMETERS_FILE; do
508
509 set_variable REWEIGHTED_POSTFIT_FILE ${WORKDIR}/reweighting.${n}.postfit.root
510 set_variable REWEIGHTED_COMPARISON_FILE ${REWEIGHTED_POSTFIT_FILE:r}.comparison.root
511
512 configure_job \
513 ${WORKDIR}/reweighting.job\%.sh ${BATCH_JOB_SIZE}
514
515 if (( ${+START_JOB} )); then
516
517 exec 5> ${EXEC_FILE}
518
519 cat <<EOF >&5
520#!/bin/zsh
521
522source ${JPP_DIR}/setenv.sh ${JPP_DIR} > /dev/null
523EOF
524 fi
525
526 for (( j=1; j<=${#INPUT_REWEIGHTING_FILES}; ++j )); do
527
528 set_variable INPUT_FILE ${INPUT_REWEIGHTING_FILES[$j]}
529 set_variable REWEIGHTED_FILE ${INPUT_FILE:r}.reweighting.${n}.root
530 set_variable POSTFIT_FILE ${REWEIGHTED_FILE:r}.postfit.root
531 set_variable POSTFIT_FILE_SCALED ${POSTFIT_FILE:r}.scaled.root
532
533 set_array POSTFIT_FILES \
534 ${POSTFIT_FILES[@]} ${POSTFIT_FILE}
535
536 cat <<EOF >&5
537
538set_array PRIMARIES \\
539 \$(JPrintHeader -f ${INPUT_FILE} -k primary -- | cut -d'=' -f2)
540
541set_array PRIMARIES \\
542 \${PRIMARIES[@]} \\
543 \$(JPrintHeader -f ${INPUT_FILE} -k flux -- | cut -d' ' -f3)
544
545unset DO_REWEIGHTING
546
547for PRIMARY in \${PRIMARIES[@]}; do
548 if [[ "${NUTYPES[@]}" =~ "\${PRIMARY}" ]]; then
549 set_variable DO_REWEIGHTING
550 break
551 fi
552done
553
554if (( \${+DO_REWEIGHTING} )); then
555
556 timer_start
557
558 JEvtReweight \\
559 -f ${INPUT_FILE} \\
560 -o ${REWEIGHTED_FILE} \\
561 -P ${OSCPROBTABLE} \\
562 -@ ${OSCPARAMETERS_FILE} \\
563 -% ${WEIGHT_FACTOR_FILE} \\
564 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
565
566 CHECK_EXIT_CODE
567
568 timer_stop
569 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
570
571 timer_start
572
573 ${POSTFIT_APP} \\
574 -f ${REWEIGHTED_FILE} \\
575 -o ${POSTFIT_FILE} \\
576 -a ${DETX_FILE} \\
577 -P ${OSCPROBTABLE} \\
578 -%energyRange="${ENERGY_RANGE}" \\
579 -%coszenithRange="${COSTH_RANGE}" \\
580 -%containmentVolume="${CONTAINMENT_VOLUME}" \\
581 -%triggeredHitsRange="${N_TRIGGERED_HITS_RANGE}" \\
582 -R ${RECOTYPE} -W \\
583 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
584
585 CHECK_EXIT_CODE
586
587 JScale1D \\
588 -f ${POSTFIT_FILE}:. \\
589 -o ${POSTFIT_FILE_SCALED} \\
590 -F ${LIVETIME} \\
591 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
592
593 CHECK_EXIT_CODE
594
595 mv ${POSTFIT_FILE_SCALED} ${POSTFIT_FILE}
596
597 timer_stop
598 timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
599
600else # This file does not correspond to any of the given primaries
601
602 ln -fv ${INPUT_FILE} ${REWEIGHTED_FILE}
603 ln -fv ${INPUT_FILE:r}.postfit.root ${POSTFIT_FILE}
604fi
605
606rm -f ${REWEIGHTED_FILE}
607EOF
608 done
609
610 cat <<EOF >&5
611
612hadd -v 0 -f ${REWEIGHTED_POSTFIT_FILE} ${POSTFIT_FILES[@]}
613
614timer_start
615
616JZebraMantis \\
617 -a ${REFERENCE_POSTFIT_FILE} \\
618 -b ${REWEIGHTED_POSTFIT_FILE} \\
619 -s ${STEERING_FILE} \\
620 -o ${REWEIGHTED_COMPARISON_FILE} \\
621 -t ${REWEIGHTED_COMPARISON_FILE:r}.txt \\
622 -d ${DEBUG} --! ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
623
624 CHECK_EXIT_CODE
625
626timer_stop
627timer_print ${BATCH_LOGGING:+&>> ${LOG_FILE} 2>&1}
628
629${SUBMIT_JOB+#rm -f ${EXEC_FILE}}
630EOF
631
632 if (( ${+SUBMIT_JOB} )); then
633
634 exec 5>&-
635
636 submit_job \
637 ${EXEC_FILE} ${(z)${BATCH_PROCESSING:+${BATCH_QUEUE_NAME} ${WORKDIR} ${PREREQUISITES[@]}}}
638
639 write_jobID ${JOBID_FILE}
640
641 unset POSTFIT_FILES
642 fi
643
644 echo "${REWEIGHTED_COMPARISON_FILE:r}.txt\t${OSCPARAMETERS_FILE}\t${WEIGHT_FACTOR_FILE}" >> ${META_FILE}
645
646 (( ++n ))
647
648 done 4< ${OSCPARAMETERS_FILE_LIST}
649
650done 3< ${WEIGHT_FACTOR_FILELIST}
651
652reset_job_config
653
654set_variable IFS ${IFS0}