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 (( $