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 /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))"
49 usage "$script <detector file> <input file>+ [working directory [reweighting formula [parameter setting]+]]"
72 # Determine number of parameters in given formula
80 fatal
"Number of input parameters (= ${#PARAMETERS}) is incompatible with given formula: ${FORMULA}"
87 echo "----------------------------"
89 echo "----------------------------"
91 echo "Remove the above regular files? (y/n)"
93 read REUSE_MC_MERGE_FILES
95 if [[ ${REUSE_MC_MERGE_FILES} ==
"y" || ${REUSE_MC_MERGE_FILES} ==
"Y" ||
96 ${REUSE_MC_MERGE_FILES} ==
"yes" || ${REUSE_MC_MERGE_FILES} ==
"Yes" || ${REUSE_MC_MERGE_FILES} ==
"YES" ]];
then
103 # Initialise local batch processor
105 if [[ ${BATCH_PROCESSING} == 1 ]];
then
107 if ( is_CCNikhef );
then
109 echo "Submitting reweighting and histogram comparison jobs to nikhef-stbc batch queue: ${QUEUE_NAME}..."
111 if [[ ${SCRATCHDIR} ==
"/tmp" ]];
then
112 fatal
"Please specify a valid directory for local \'scratch\' files other than \"/tmp\""
117 fatal
"No batch-processing option available yet for CC-Lyon."
121 echo "Submitting reweighting and histogram comparison jobs to local batch queue: ${QUEUE_NAME}..."
125 $JPP_DIR/examples/scripts/mkqueue.sh ${QUEUE_NAME} ${QUEUE_SIZE}
"start"
130 # Divide into DAQ- and MC-files
132 echo "Dividing into DAQ- and MC-files..."
136 if [[
"$(JPrintHeader -f ${INPUT_FILE} -k simul --)" !=
" 0" ]];
then # MC-
file
139 set_array INPUT_DAQ_FILES ${INPUT_DAQ_FILES[@]} ${
INPUT_FILE}
148 if ( ! reuse_file ${DAQ_POSTFIT_FILE} );
then
155 -
f "${INPUT_DAQ_FILES[*]}" \
156 -
o ${DAQ_POSTFIT_FILE} \
158 -@energyRange=
"${ENERGY_RANGE}" \
159 -@coszenithRange=
"${COSTH_RANGE}" \
160 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \
169 # Create histogram comparison ASCII steering file
171 set_array NAMES ${(
f)$(JPrintName -
f ${DAQ_POSTFIT_FILE}:.)}
175 rm -
f ${STEERING_FILE}
180 for NAME
in ${NAMES[@]};
do
183 -
f ${DAQ_POSTFIT_FILE}:^${NAME}\$ \
184 -
F "GetNcells / ((GetNbinsX+2)*(GetNbinsY+2))" \
187 if [[ ${NAME} !=
"META" && ${NAME} !=
"TObject" ]];
then
189 if (( BINFRAC > 1.0 ));
then
190 warning "Cannot perform comparison test for histogram ${NAME} with >2 dimensions; skip."
192 echo "${NAME}\$ ${TEST_TYPE1D} ${TEST_TYPE1D_PARAMETERS}" >> ${STEERING_FILE}
193 set_array HISTOGRAMS1D ${HISTOGRAMS1D[@]} ${NAME}
195 echo "${NAME}\$ ${TEST_TYPE2D} ${TEST_TYPE2D_PARAMETERS}" >> ${STEERING_FILE}
196 set_array HISTOGRAMS2D ${HISTOGRAMS2D[@]} ${NAME}
210 -
f "${INPUT_MC_FILES[*]}" \
211 -
o ${MC_MERGE_FILE} \
218 # Process MC-files with standard
weights
220 unset STANDARD_OUTPUT
224 echo "Submitting histogram comparison job for ${MC_MERGE_FILE:t}"
234 -
f ${MC_MERGE_FILE} \\
235 -
o ${MC_MERGE_FILE:
r}.postfit.root \\
237 -@energyRange=
"${ENERGY_RANGE}" \\
238 -@coszenithRange=
"${COSTH_RANGE}" \\
239 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
241 -
d ${
DEBUG} --! ${BATCH_LOGGING:+&> ${MC_MERGE_FILE:
r}.postfit.log}
244 timer_print ${BATCH_LOGGING:+&>> ${MC_MERGE_FILE:
r}.postfit.log}
249 -
a ${DAQ_POSTFIT_FILE} \\
250 -b ${MC_MERGE_FILE:
r}.postfit.root \\
251 -s ${STEERING_FILE} \\
252 -
o ${MC_MERGE_FILE:
r}.postfit.comparison.root \\
253 -t ${MC_MERGE_FILE:
r}.postfit.comparison.txt \\
254 -
d ${
DEBUG} --! ${BATCH_LOGGING:++&> ${MC_MERGE_FILE:
r}.postfit.comparison.log}
257 timer_print ${BATCH_LOGGING:+&>> ${MC_MERGE_FILE:
r}.postfit.comparison.log}
264 if [[ ${BATCH_PROCESSING} == 1 ]];
then
266 if ( is_CCNikhef );
then
285 set_array STANDARD_OUTPUT ${MC_MERGE_FILE:
r}.postfit.comparison.root
289 # Process MC-files with redefined weights
291 unset REWEIGHTED_OUTPUT
292 typeset -
A REWEIGHTED_OUTPUT
296 if [[ -
f ${MC_MERGE_FILE:
r}.reweighting.comparison.meta.txt ]];
then
297 rm -i ${MC_MERGE_FILE:
r}.reweighting.comparison.meta.txt
300 for (( i = 1; i <= ${N_PARSETS}; ++i ));
do
304 for ((
j = 0;
j < N_PAR; ++
j ));
do
305 PARSET+=
" p${j}=${PARAMETERS[$(((i-1)*N_PAR + j + 1))]};"
310 if (( i % JOB_SIZE == 1 ));
then
312 if (( i + JOB_SIZE - 1 <= N_PARSETS ));
then
321 elif (( i % JOB_SIZE == 0 || i == N_PARSETS ));
then
325 echo "Submitting reweighting jobs ${JOBRANGE[1]} to ${JOBRANGE[2]} for ${MC_MERGE_FILE:t}"
337 ${START_JOB:+#!/bin/zsh}
341 JEvtReweightMupage \\
342 -
f ${MC_MERGE_FILE} \\
349 timer_print ${BATCH_LOGGING:+&>> ${
OUTPUT_FILE:
r}.log 2>&1}
357 -@energyRange=
"${ENERGY_RANGE}" \\
358 -@coszenithRange=
"${COSTH_RANGE}" \\
359 -@triggeredHitsRange=
"${N_TRIGGERED_HITS_RANGE}" \\
364 timer_print ${BATCH_LOGGING:+&>> ${
OUTPUT_FILE:
r}.postfit.log 2>&1}
369 -
a ${DAQ_POSTFIT_FILE} \\
371 -s ${STEERING_FILE} \\
376 echo "${OUTPUT_FILE:r}.postfit.comparison.txt; ${FORMULA}; ${PARSET}" >> ${
WORKDIR}/comparisonResults.meta.txt
379 timer_print ${BATCH_LOGGING:+&>> ${
OUTPUT_FILE:
r}.postfit.comparison.log 2>&1}
384 if (( ${+SUBMIT_JOB} ));
then
386 if [[ ${BATCH_PROCESSING} == 1 ]];
then
390 if ( is_CCNikhef );
then
then fatal Please specify a valid directory for local scratch files other than tmp fi elif(is_CCLyon)
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
then usage $script< detector file >< inputfile > nUtility script to create PDF and CDF of transition time distribution fi case set_variable WORKDIR
then echo Submitting reweighting and histogram comparison jobs to nikhef stbc batch queue
then echo Enter input within $TIMEOUT_S seconds echo n User name
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
*set_variable INDEX_WORKDIR
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
&set_variable OUTPUT_FILE
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
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 source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
set_variable NUMBER_OF_ITERATIONS set_variable EPSILON cat acoustics_fit_parameters txt<< EOF $CONFIGURATION[*]Nmin=3;sigma_s=100.0e-6;stdev=10.0;mestimator=0;fixStrings=0;EOF for STRING in $STRINGS[*];do#fit stretching and(z) position of given string set_variable DETECTOR_TMP/tmp/detector_A.datx JEditDetector-a $DETECTOR-o $DETECTOR_TMP-r $STRING JEditDetector-a $DETECTOR-o $DETECTOR-k $STRING for MUL in 0.005 0.001;do DX_M=0.2 for((N=0;$N< $NUMBER_OF_ITERATIONS;++N));do CHI2[3]=$CHI2[1] fitPositionOfString $STRING Z $DX_M fitStretchingOfString $STRING $MUL if(($CHI2[3]-$CHI2[1]< $EPSILON));then break fi done if(($N >=$NUMBER_OF_ITERATIONS));then printf"warning: reached maximum number of iterations %d - converenge %7.3f\n"$N $(($CHI2[3]-$CHI2[1])) fi done JMergeDetector-a $DETECTOR-a $DETECTOR_TMP-o $DETECTOR rm-f $DETECTOR_TMP JConvertDetectorFormat-a $DETECTOR-o $DETECTOR-r-d 0 > &dev null done
then usage $script< detector file >< inputfile > fi case set_array PARAMETERS
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
then set_array INPUT_MC_FILES
then usage $script< string identifier >< detectorfile > event file(toashort file)+" "\nNote that the event files and toashort files should be one-to-one related." fi if (( $