4# --------------------------------------------------------------------------------------------
6# Steering script for the global-fit-of-global-fits procedure of the D0ORCA038 (291) detector.
8# --------------------------------------------------------------------------------------------
10if [ -z $JPP_DIR ]; then
11 echo "Variable JPP_DIR undefined."
15if [ -z $CALIBRATION_ARCHIVE ]; then
16 echo "Variable CALIBRATION_ARCHIVE undefined."
20source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
22set_variable DETECTOR_ID 291
23set_array RUNS 29215-29222
24set_variable: THREADS ACOUSTICS_THREADS 32
25set_variable: CALIBRATION_ARCHIVE CALIBRATION_ARCHIVE
26set_variable SINGULARITY -
27set_variable: WORKDIR ACOUSTICS_WORKDIR ./
28set_variable HOMEDIR $WORKDIR
33 "\nRequires variable CALIBRATION_ARCHIVE to be set for the user."
36source JAcousticsToolkit.sh
38set_variable DETECTOR $WORKDIR/detector.datx
39set_variable TRIPOD $WORKDIR/tripod.txt
40set_variable DETECTOR_INITIAL detector_initial.datx
41set_variable TRIPOD_INITIAL tripod_initial.txt
50# retrieve D0ORCA033 detector, tripod from calibration archive
51# MAKE SURE TO USE THE D0ORCA033_fixed BRANCH (NOT YET IN THE CALIBRATION ARCHIVE MAIN BRANCH)
52getFile.sh $CALIBRATION_ARCHIVE 274 1 detector $WORKDIR/D0ORCA033
53getFile.sh $CALIBRATION_ARCHIVE 274 1 tripod $WORKDIR/tripod_D0ORCA033
55# retrieve D0ORCA033 mechanics, fit parameters, sound velocity
56getFile.sh $JPP_DIR/inputs/ 274 1 mechanics $WORKDIR/mechanics
57getFile.sh $JPP_DIR/inputs/ 274 1 acoustics_fit_parameters $WORKDIR/acoustics_fit_parameters
58getFile.sh $JPP_DIR/inputs/ 274 1 sound_velocity $WORKDIR/sound_velocity
60# Get a initial detector for D0ORCA038 from the JDetectorDB, to be optimised in the global-fit-of-global-fits procedure.
68# Edited tripod 11 and 15 initial positions to adjust for 3.5 m vertical height above sea floor
69cat>$TRIPOD_INITIAL<<EOF
70# Data from D0ORCA038 input_tables
7111 257208.80 4743611.20 -2440.19
7212 257000.30 4743616.80 -2441.30
7315 257222.80 4743333.20 -2438.49
7416 256850.30 4743351.70 -2440.00
77eval `JPrintDetector -a $DETECTOR_INITIAL -O SUMMARY`; FINAL_STRINGS=($STRINGS[*])
78eval `JPrintDetector -a D0ORCA033.datx -O SUMMARY`; FIXED_STRINGS=($STRINGS[*])
83 -a $DETECTOR_INITIAL \
86eval `JPrintDetector -a detector.datx -O SUMMARY`
88for STRING in ${STRINGS[*]}; do
90 set_variable MODULE `getModule -a detector.datx -L "$STRING 0"`
94 -M "$MODULE setz -2.9" \
98JEditDetector -a detector.datx -r "$FIXED_STRINGS[*]" -o detector.datx --!
99JMergeDetector -a detector.datx -a D0ORCA033.datx -o detector.datx --!
100JEditDetector -a detector.datx -k "$FINAL_STRINGS[*]" -o detector.datx --!
104get_tripods $TRIPOD_INITIAL TRIPODS; FINAL_TRIPODS=(${(k)TRIPODS[*]})
105get_tripods $WORKDIR/tripod_D0ORCA033.txt TRIPODS; FIXED_TRIPODS=(${(k)TRIPODS[*]})
107cp -p $TRIPOD_INITIAL tripod.txt
109JEditTripod -f tripod.txt -r "${FIXED_TRIPODS}" -o tripod.txt
110JMergeTripod -f tripod.txt -f $WORKDIR/tripod_D0ORCA033.txt -o tripod.txt
111JEditTripod -f tripod.txt -k "${FINAL_TRIPODS}" -o tripod.txt
114# Data from D2ORCA024_waveforms.csv
131# Changed to 500 based on investigation average number of hits per event in D0ORCA038 (around 550-600)
132cat>acoustics_trigger_parameters.txt<<EOF
133# Trigger parameters D0ORCA038
139# Updated disable file for D0ORCA038
141# 78c0dfdb-6bd7-4d56-8d09-0774a88615c4$
142# GIT 20.0.0-195-g190c9e876
144# application JEditDisable
145# command /pbs/throng/km3net/software/RHEL9/jpp/master/out//Linux/bin//JEditDisable -f new_disable.log -o new_disable.log -a detector.datx -q -d 2 --!
147# system Linux cca013 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 7 14:39:16 EDT 2026 x86_64
164cat>transmitter.txt<<EOF
166 9 27 0 -0.74 -0.64 0.71
16710 41 0 -0.40 -0.89 0.71
16814 50 0 -0.26 -0.94 0.71
171cat>hydrophone.txt<<EOF
172# Data from D0ORCA038 input_tables
205 64 -1 -0.07 1.04 0.55
209 48 0 -1.03 -0.16 0.55
210 37 0 -1.01 -0.25 0.55
216set_variable: QUALITY_FACTOR ACOUSTICS_QUALITYFACTOR 2.0e3
218BUFFER=(`JRuns -D $DETECTOR_ID -F RUN`)
219let "NUMBER_OF_ERRORS = 0"
220for RUN in ${RUNS:*BUFFER}; do
222 set_variable INPUT_FILE $WORKDIR/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_toa.root
223 set_variable OUTPUT_FILE $WORKDIR/KM3NeT_${(l:8::0::0:)DETECTOR_ID}_${(l:8::0::0:)RUN}_event.root
225 if [[ ! -f $INPUT_FILE ]]; then
228 -@ "detid = `getDetector -D $DETECTOR_ID`" \
231 -@ "QUALITYFACTOR >= $QUALITY_FACTOR" \
235 if (( $? != 0 )); then
236 let "NUMBER_OF_ERRORS = $NUMBER_OF_ERRORS + 1"
240 if [[ -f $INPUT_FILE ]] && [[ ! -f $OUTPUT_FILE ]]; then
244 JAcousticsEventBuilder \
247 -T $WORKDIR/tripod.txt \
248 -Y $WORKDIR/transmitter.txt \
249 -V $WORKDIR/sound_velocity.txt \
250 -W $WORKDIR/waveform.txt \
251 -@ $WORKDIR/acoustics_trigger_parameters.txt \
252 -H $WORKDIR/hydrophone.txt \
256 if (( $? != 0 )); then
257 let "NUMBER_OF_ERRORS = $NUMBER_OF_ERRORS + 1"
265if (( $NUMBER_OF_ERRORS != 0 )); then
266 error "Number of errors $NUMBER_OF_ERRORS"
269INPUT_FILES=(`ls KM3NeT_${(l:8::0::0:)DETECTOR_ID}_0*${^RUNS}_event.root`)
275if [ ! $HOMEDIR -ef $WORKDIR ]; then
276 cp -p $HOMEDIR/$ACOUSTICS_DETECTOR $WORKDIR
277 cp -p $HOMEDIR/${^ACOUSTICS_KEYS}.txt $WORKDIR
278 cp -p $HOMEDIR/${^ACOUSTICS_AUXS}.txt $WORKDIR
279 cp -p $HOMEDIR/${^INPUT_FILES} $WORKDIR
284fix string $FIXED_STRINGS[*]
285fix tripod $FIXED_TRIPODS[*]
287stage 0 ${SINGULARITY}1 0 100.0e-6 10.0 10 0.5
288stage 1B ${SINGULARITY}1 0 100.0e-6 10.0 0 0.001 0.1
289stage 2A ${SINGULARITY}1 0 100.0e-6 10.0 20 0.2 0.5
290stage 2C ${SINGULARITY}1 0 100.0e-6 10.0 20 0.2
294stage 2a ${SINGULARITY}1 0 100.0e-6 10.0 20 0.2 0.5
295stage 2c ${SINGULARITY}1 0 100.0e-6 10.0 20 0.2
296stage 3a ${SINGULARITY}1 0 50.0e-6 10.0 20 0.2 0.5
297stage 3c ${SINGULARITY}1 0 50.0e-6 10.0 20 0.2
302 -f "$INPUT_FILES[*]" \
305 -V sound_velocity.txt \
307 -@ acoustics_fit_parameters.txt \
314# copy detector and tripod to align with initial ORCA033 and ROV measurements
315cp -p $DETECTOR $WORKDIR/aligned_detector.datx
316cp -p $TRIPOD $WORKDIR/aligned_tripod.txt
318# Align with D0ORCA033
320 -a $WORKDIR/aligned_detector.datx \
321 -b $WORKDIR/D0ORCA033.datx \
322 -P "x y z phi tx ty" \
324 -T $WORKDIR/aligned_tripod.txt \
329 -a $WORKDIR/aligned_detector.datx \
330 -b $WORKDIR/$DETECTOR_INITIAL \
333 -T $WORKDIR/aligned_tripod.txt \
336# copy detector to apply z-adjustment
337cp -p $WORKDIR/aligned_detector.datx $WORKDIR/aligned_detector_z_adjusted.datx
340 -a $WORKDIR/aligned_detector_z_adjusted.datx \
341 -f $WORKDIR/KM3NeT_00000291_*event.root \
342 -o $WORKDIR/aligned_detector_z_adjusted.datx
344if [ ! $HOMEDIR -ef $WORKDIR ]; then