5 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
7 if ( do_usage $* ); then
8 usage "$script <daq_file> <detector_file> <jra_file> <output_file(.pdf)> <module_id> <integration_site> [min_rate [max_rate [min_tot [max_tot]]]]"
12 fatal "No input files."
38 echo "Too many arguments"
43 set_array DAQ_HEADER `JPrintDAQHeader -f ${DAQ_FILE} -d 0`
44 typeset -Z 8 RUN_NUMBER=${DAQ_HEADER[2]}
46 set_variable OUT_DIR `readlink -f $(dirname ${JRA_REPORT})`
47 set_variable REPORT_NAME `echo $(basename ${JRA_REPORT} .pdf)`
48 set_variable TEMPLATE_DIR ${JPP_DIR}/software/JRunAnalyzer/report
49 set_variable REPORT_DIR `readlink -f ${OUT_DIR}/JRA_report_${RUN_NUMBER}`
50 set_variable FIGURE_DIR ${REPORT_DIR}/figures
51 set_variable INCLUDE_DIR ${REPORT_DIR}/include
53 set_variable JFIT_TOT_ROOT_FILE ${FIGURE_DIR}/JFit_ToT_${RUN_NUMBER}.root
54 set_variable JFIT_TOT_ASCII_FILE ${FIGURE_DIR}/JFit_ToT_${RUN_NUMBER}.txt
55 set_variable JPROJECT_FILE ${FIGURE_DIR}/JProject_rates_${RUN_NUMBER}.root
57 set_variable MIN_RATE 0.15
58 set_variable MAX_RATE 0.19
59 set_variable MIN_TOT 18
60 set_variable MAX_TOT 20
62 #######################################
63 #Variables that we will need to define#
64 #######################################
66 if [ ! -d ${OUT_DIR} ]
71 if [ ! -d ${REPORT_DIR} ]
73 mkdir -p ${REPORT_DIR}
76 if [ ! -d ${FIGURE_DIR} ]
78 mkdir -p ${FIGURE_DIR}
81 # Parse the detector file name from the complete path, and format it so that it compiles in latex.
83 IFS='/' read -ra ADDR <<< "$DETECTOR_FILE"
85 TEX_DETFILE=$(sed -e "s/_/\$\\\\\\\_\$/g" <<< "${ADDR[-1]}")
88 # Here we start appending sed commands to a script that we will later apply to the template.
89 # These commands search a pattern in the template and substitute this pattern by some information obtained from the DAQ files.
91 echo "Preparing report ${run_report}"
93 printf 's/%s/%s/g\n' "--runNumber--" "${RUN_NUMBER}">script.sed
94 printf 's/%s/%s/g\n' "--detectorFile--" "${TEX_DETFILE}">>script.sed
95 printf 's/%s/%s/g\n' "--moduleID--" "${MODULE_ID}">>script.sed
96 printf 's/%s/%s/g\n' "--instrument--" "${INSTRUMENT}">>script.sed
97 printf 's/%s/%s/g\n' "--integrationSite--" "${INTEGRATION_SITE}">>script.sed
100 ################################################################################################
101 # Get detector information such as the number of modules, number of DUs and number of floors. #
102 ################################################################################################
104 det_summary=$(JPrintDetector -a $DETECTOR_FILE -O "summary")
106 DET_COMPONENTS=("strings" "floors" "modules")
110 for i in "${DET_COMPONENTS[@]}"; do
111 Regex="Number[[:space:]]+of[[:space:]]+$i[[:space:]]+="
112 if [[ $det_summary =~ $Regex([[:space:]]+)([0-9]+) ]]; then
113 N_COMPONENTS+=(${BASH_REMATCH[2]})
117 N_STRINGS=${N_COMPONENTS[0]}
118 N_FLOORS=${N_COMPONENTS[1]}
119 N_MODULES=${N_COMPONENTS[2]}
121 printf 's/%s/%s/g\n' "--nStrings--" "${N_STRINGS}">>script.sed
122 printf 's/%s/%s/g\n' "--nFloors--" "${N_FLOORS}">>script.sed
123 printf 's/%s/%s/g\n' "--nModules--" "${N_MODULES}">>script.sed
126 ##############################################
127 # Extract JDAQ Types present in the run file #
128 ##############################################
132 trees=($(JPrintTree -f $DAQ_FILE 2>&1))
137 for i in "${trees[@]}"; do
138 if [[ $i =~ $regex(.*) ]]; then
139 printf 's/%s/%s/g\n' "--n${BASH_REMATCH[1]}--" "${trees[$c+1]}"
140 printf 's/%s/%s/g\n' "--s${BASH_REMATCH[1]}--" "${trees[$c+2]}"
141 if [ ${trees[$c+1]} -ne 0 ]; then
142 JDAQTYPES+=(${BASH_REMATCH[1]})
150 ############################################################
151 # Extract ROOT versions of objects present in the run file #
152 ############################################################
154 trees=($(JPrintRootVersion -f $DAQ_FILE 2>&1))
159 for i in "${trees[@]}"; do
160 if [[ $i =~ $regex(.*) ]]; then
161 printf 's/%s/%s/g\n' "--r1${BASH_REMATCH[1]}--" "${trees[$c+1]}"
162 printf 's/%s/%s/g\n' "--r2${BASH_REMATCH[1]}--" "${trees[$c+2]}"
168 #######################################
169 # Extract information from JPrintMeta #
170 #######################################
172 run_info=($(JPrintMeta -f $DAQ_FILE 2>&1))
174 printf 's:%s:%s:g\n' "--rootdaq--" "${run_info[1]}">>script.sed
175 TEX_JPP=$(sed -e "s/_/\\\\\\\_/g" <<< "${run_info[3]}")
176 printf 's/%s/%s/g\n' "--jppdaq--" "${TEX_JPP}">>script.sed
178 run_info=($(JPrintMeta -f $JRA_FILE 2>&1))
180 printf 's:%s:%s:g\n' "--rootjra--" "${run_info[3]}">>script.sed
181 TEX_JPP=$(sed -e "s/_/\\\\\\\_/g" <<< "${run_info[1]}")
182 printf 's/%s/%s/g\n' "--jppjra--" "${TEX_JPP}">>script.sed
188 ####################################################################
189 # Use JFitToT to fit the ToT distributions for each PMT in the DOM #
190 ####################################################################
192 JFitToT -a "${DETECTOR_FILE}" -f "${JRA_FILE}" -R "Detector/DU${STRING}/F${FLOOR}/%_TimesliceL1_2SToT" -o "${JFIT_TOT_ROOT_FILE}" -w -x "12 35" -P "${JFIT_TOT_ASCII_FILE}"
194 echo ${JFIT_TOT_ROOT_FILE}
200 for((j=0;j<N_PMTS;j++)); do
201 JPlot1D -f "${JFIT_TOT_ROOT_FILE}:${MODULE_ID}.${j}.1ToT" -x "0 35" -">" "ToT [ns]" -"^" "Counts [a.u.]" -y "1e-3 2e-1" -Y -G "[X][Y]" -T "PMT ${j}" -o "${FIGURE_DIR}/tot_fit_PMT_${j}.png" -B
202 SLICES=$SLICES" $(echo ${j} - 0.5 | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./') $(echo ${j} + 0.5 | bc)"
205 JProject2D -f "${JRA_FILE}:Detector/DU${STRING}/F${FLOOR}/h_pmt_rate_distributions_TimesliceL1" -P x -y "${SLICES}" -o "${JPROJECT_FILE}"
209 for((j=0;j<N_PMTS;j++)); do
210 JPlot1D -f "${JPROJECT_FILE}:h_pmt_rate_distributions_TimesliceL1_px\\[$(echo ${j} - 0.5 | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./')" -x "1e-3 1e1" -X -y "1e-1 1e4" -Y -G "[X][Y]" -T "PMT ${j}" -o "${FIGURE_DIR}/rate_PMT_${j}.png" -B
211 MEAN_TOT=$(JPrintResult -f "${JFIT_TOT_ROOT_FILE}:${MODULE_ID}.${j}.1ToT" -F "GetMean")
212 SIGMA_TOT=$(JPrintResult -f "${JFIT_TOT_ROOT_FILE}:${MODULE_ID}.${j}.1ToT" -F "GetRMS")
213 MEAN_RATE=$(JPrintResult -f "${JPROJECT_FILE}:h_pmt_rate_distributions_TimesliceL1_px\\[$(echo ${j} - 0.5 | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./')" -F "GetMean")
214 SIGMA_RATE=$(JPrintResult -f "${JPROJECT_FILE}:h_pmt_rate_distributions_TimesliceL1_px\\[$(echo ${j} - 0.5 | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./')" -F "GetRMS")
215 printf 's/%s/%s/g\n' "--rate-$(printf %02d $j)--" "${MEAN_RATE}"
216 printf 's/%s/%s/g\n' "--sRate-$(printf %02d $j)--" "${SIGMA_RATE}"
217 printf 's/%s/%s/g\n' "--ToT-$(printf %02d $j)--" "${MEAN_TOT}"
218 printf 's/%s/%s/g\n' "--sToT-$(printf %02d $j)--" "${SIGMA_TOT}"
219 if (( $(echo "${MEAN_RATE} > $MAX_RATE" |bc -l) )) || (( $(echo "${MEAN_RATE} < $MIN_RATE" |bc -l) )) ; then
220 printf 's/%s/%s/g\n' "--passRate-$(printf %02d $j)--" "\\\\rcross"
221 printf 's/%s/%s/g\n' "--pass-$(printf %02d $j)--" "\\\\rcross"
223 printf 's/%s/%s/g\n' "--passRate-$(printf %02d $j)--" "\\\\gcheck"
226 if (( $(echo "${MEAN_TOT} > $MAX_TOT" |bc -l) )) || (( $(echo "${MEAN_TOT} < $MIN_TOT" |bc -l) )) ; then
227 printf 's/%s/%s/g\n' "--passToT-$(printf %02d $j)--" "\\\\rcross"
228 printf 's/%s/%s/g\n' "--pass-$(printf %02d $j)--" "\\\\rcross"
230 printf 's/%s/%s/g\n' "--passToT-$(printf %02d $j)--" "\\\\gcheck"
231 printf 's/%s/%s/g\n' "--pass-$(printf %02d $j)--" "\\\\gcheck"
237 # ################################################################
238 # # Now the sed script is used to replace in the template report #
239 # ################################################################
241 sed -f script.sed <${TEMPLATE_DIR}/JRA_report_DOM.template >${REPORT_DIR}/JRA_report_DOM_${RUN_NUMBER}.tex && rm -f script.sed
247 make doc >& /dev/null