4 # -----------------------------------------------------------------------------------------------------
6 # Toolkit for the determination of the fixed parameters in the system, a.k.a. "pre-calibration".
7 # The list of parameters includes (x,y,z) positions of strings and tripods, stretching of strings,
8 # z-positions of the optical modules, orientations of the strings and possibly z-positions of anchors.
10 # The value of a given parameter is optimised by minimising the average chi2/NDF
11 # of a series of global fits applied to a predefined set of acoustic events.
12 # For each parameter, there exists a designated function.
14 # There are also steering functions to consistently determine the optimal values for a set of parameters.
15 # In these, the current accuracy of the parameter values is taken into account.
16 # These are therefore referred to as "stages".
17 # The pre-calibration thus consists of a sequence of stages.
18 # For each detector, a complete pre-calibration procedure is implemented in a designated script.
20 # Mandatory input variables:
22 # DETECTOR # detector file
23 # TRIPOD # tripod file
24 # INPUT_FILES # list of input files (output of JAcousticsEventBuilder[.sh])
26 # Optional input variables:
28 # HYDROPHONE # if defined, use hydrophones in global fit; else do not use hydrophones
32 # STRINGS corresponds to list of strings to be fitted; this can be changed with function fixStrings.
33 # TRIPODS corresponds to list of tripods to be fitted; this can be changed with function fixTripods.
35 # TRANSMITTERS corresponds to list of strings which have an emitter on the anchor (maybe empty).
36 # For these strings, the orientations and the z-positions of the anchors will separately be fitted.
37 # This list will also be changed with function fixStrings.
38 # -----------------------------------------------------------------------------------------------------
40 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/
null
43 usage "source $script"\
44 "\nThis script contains auxiliary functions for the pre-calibration of specific detectors."\
45 "\nIt should be sourced by the detector specific scripts."
48 source JAcousticsToolkit.sh
54 typeset -
a CHI2 # chi2
values; index [1] corresponds to latest
55 set_variable PRECISION 1.0E-5 # minimal change
in chi2 to make step
60 # -----------------------------------------------------------------------------------------------------
63 # Install input files in working directory and create temporary directory TMPDIR.
65 # -----------------------------------------------------------------------------------------------------
68 eval `JPrintDetector -
a $DETECTOR -O IDENTIFIER`
72 JAcoustics.sh $DETECTOR_ID
76 TRANSMITTERS=(`get_strings_with_transmitter
$WORKDIR/transmitter.txt`)
82 # -----------------------------------------------------------------------------------------------------
85 # -----------------------------------------------------------------------------------------------------
88 rm -rf $TMPDIR >& /dev/
null
90 rm -
f {acoustics_fit_parameters,acoustics_trigger_parameters}.txt
92 JAcoustics.sh $DETECTOR_ID
96 # -----------------------------------------------------------------------------------------------------
99 # \param 1-N identifiers
100 # -----------------------------------------------------------------------------------------------------
107 if (( ${#BUFFER} > 0 ));
then
109 TRANSMITTERS=(${TRANSMITTERS:|BUFFER})
114 # -----------------------------------------------------------------------------------------------------
117 # \param 1-
N identifiers
118 # -----------------------------------------------------------------------------------------------------
125 if (( ${#BUFFER} > 0 ));
then
126 for ID in $BUFFER[*];
do
127 unset
"TRIPODS[${ID}]"
133 # -----------------------------------------------------------------------------------------------------
134 # Purge comments from detector file.
136 # -----------------------------------------------------------------------------------------------------
143 # -----------------------------------------------------------------------------------------------------
144 # Get center-of-gravity of tripods.
147 # -----------------------------------------------------------------------------------------------------
150 typeset -
A __TRIPODS__
158 if (( ${#__TRIPODS__} >= 1 ));
then
160 for _X _Y _Z
in `
echo ${(@
v)__TRIPODS__}`;
do
166 let
"X = $X / ${#__TRIPODS__}"
167 let
"Y = $Y / ${#__TRIPODS__}"
168 let
"Z = $Z / ${#__TRIPODS__}"
171 printf
"%15.5f %15.5f %15.5f" $X $Y $Z
175 # -----------------------------------------------------------------------------------------------------
176 # Set detector and tripods to given center-of-gravity.
181 # -----------------------------------------------------------------------------------------------------
190 printf
"Fix center %15.5f %15.5f %15.5f\n" $X $Y $Z
197 # -----------------------------------------------------------------------------------------------------
198 # Evaluate current chi2 and set value in CHI2 at given index.
201 # -----------------------------------------------------------------------------------------------------
204 for (( m = 0; $m != 3; ++m ));
do
208 date >& $TMPDIR/katoomba.log
212 -
f "$INPUT_FILES[*]" \
213 -
o $TMPDIR/katoomba.root \
218 -@ $TMPDIR/acoustics_fit_parameters.txt \
223 -
d 2 --! >>& $TMPDIR/katoomba.log
227 if (( $ERROR == 0 ));
then
229 let
"VALUE = $(JPrintResult -f $TMPDIR/katoomba.root:chi2 -F GetMean)" >>& $TMPDIR/katoomba.log
233 if (( $ERROR == 0 ));
then
235 eval CHI2\[$1\]=$VALUE
239 printf
"warning: exit code let %d\n" $ERROR
242 printf
"warning: exit code JKatoomba %d\n" $ERROR
245 # backup error status
249 cp -p $TMPDIR/katoomba.log $UDIR
250 cp -p $TMPDIR/katoomba.root $UDIR
255 printf
"warning: backup %s\n" $UDIR
258 printf
"warning: no valid chi2 -> exit\n"
263 # -----------------------------------------------------------------------------------------------------
264 # Fit given coordinate of string position.
266 # \param 1 string identifier
267 # \param 2 coordinate (X|Y|Z)
269 # -----------------------------------------------------------------------------------------------------
274 BUFFER=(
X 0.0
Y 0.0
Z 0.0)
278 if [[
"$2" ==
"Z" ]];
then
279 OPTION=-s # optical modules only
281 OPTION=-
S # all modules
284 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
292 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
302 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
310 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
320 printf
"string %04d %s %6.4f %6d %8.4f\n" $1 $2 $3 $N $CHI2[1]
324 # -----------------------------------------------------------------------------------------------------
325 # Fit stretching of string.
327 # \param 1 string identifier
328 # \param 2 multiplication factor
329 # -----------------------------------------------------------------------------------------------------
332 let
"Z = $CAN_ZMAX_M * $2"
334 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
342 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
352 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
360 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
370 printf
"string %04d M %6.4f %6d %8.4f\n" $1 $2 $N $CHI2[1]
374 # -----------------------------------------------------------------------------------------------------
375 # Fit given coordinate of tripod position.
377 # \param 1 tripod identifier
378 # \param 2 coordinate (X|Y|Z)
380 # -----------------------------------------------------------------------------------------------------
385 BUFFER=(
X 0.0
Y 0.0
Z 0.0)
389 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
397 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
407 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
415 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
425 printf
"tripod %2d %s %6.4f %6d %8.4f\n" $1 $2 $3 $N $CHI2[1]
429 # -----------------------------------------------------------------------------------------------------
430 # Fit module z-position.
432 # \param 1 string identifier
435 # -----------------------------------------------------------------------------------------------------
440 BUFFER=(
X 0.0
Y 0.0
Z $3)
445 for (( i=0 ;
$i != $NUMBER_OF_STEPS && $N != $NUMBER_OF_ITERATIONS; ++i, ++
N ));
do
453 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
463 for (( i=0 ;
$i != $NUMBER_OF_STEPS && $N != $NUMBER_OF_ITERATIONS; ++i, ++
N ));
do
471 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
481 printf
"module %04d.%02d %6.4f %6d %8.4f\n" $1 $2 $3 $N $CHI2[1]
485 # -----------------------------------------------------------------------------------------------------
486 # Fit given coordinate of anchor position.
488 # Note that the position of the anchor corresponds to the position of the base module in the detector.
489 # The z-position can independently be changed whereas a change in the (x,y) position
490 # affects the complete string (i.e. including optical modules).
492 # \param 1 string identifier
493 # \param 2 coordinate (X|Y|Z)
495 # -----------------------------------------------------------------------------------------------------
500 BUFFER=(
X 0.0
Y 0.0
Z 0.0)
504 if [[
"$2" ==
"Z" ]];
then
508 ADD=
"-M $MODULE add ${(v)BUFFER}" # base module only
509 SUB=
"-M $MODULE sub ${(v)BUFFER}" # base module only
511 ADD=
"-S $1 add ${(v)BUFFER}" # all modules
512 SUB=
"-S $1 sub ${(v)BUFFER}" # all modules
515 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
523 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
533 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
541 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
551 printf
"anchor %04d %s %6.4f %6d %8.4f\n" $1 $2 $3 $N $CHI2[1]
555 # -----------------------------------------------------------------------------------------------------
556 # Fit rotation of anchor.
558 # Note that a rotation of the anchor corresponds to a change of the relative positions of
559 # the hydrophone and emitter with respect to the T-bar.
561 # \param 1 string identifier
562 # \param 2 rotation angle [rad]
563 # -----------------------------------------------------------------------------------------------------
568 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
571 cp $WORKDIR/transmitter.txt $TMPDIR/transmitter.txt
574 JEditTransmitter -
f $WORKDIR/transmitter.txt -
S "$1 rot $ROT" -
r -
d 0 >& /dev/
null
578 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
581 mv $TMPDIR/transmitter.txt
$WORKDIR/transmitter.txt
589 let
"ROT = -1.0 * $ROT"
591 for (( ; $N != $NUMBER_OF_ITERATIONS; ++
N ));
do
594 cp $WORKDIR/transmitter.txt $TMPDIR/transmitter.txt
597 JEditTransmitter -
f $WORKDIR/transmitter.txt -
S "$1 rot $ROT" -
r -
d 0 >& /dev/
null
601 if (( $CHI2[2] >= $CHI2[1] - $PRECISION ));
then
604 mv $TMPDIR/transmitter.txt
$WORKDIR/transmitter.txt
612 printf
"string %04d R %6.4f %6d %8.4f\n" $1 $2 $N $CHI2[1]
616 # -----------------------------------------------------------------------------------------------------
618 # This stage can be used to determine the (x,y,z) positions of tripods when a number of strings is fixed.
620 # -----------------------------------------------------------------------------------------------------
623 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
624 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
632 if (( ${#STRINGS} > 0 ));
then
633 JEditDetector -
a $DETECTOR -
o $TMPDIR/detector_0.datx -
k "$STRINGS[*]" -
d 0 >& /dev/
null
641 for DX_M
in 0.2 0.1;
do # determine (
x,y,z) positions of
tripods
643 let
"A_RAD = $DX_M / $RADIUS_M" # use maximal horizontal
distance between
T-bar and emitter/
hydrophone
645 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
649 for ID in ${(
k)TRIPODS};
do
662 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
669 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
670 printf
"warning: reached maximum number of iterations %d - convergence %7.3f\n" $N $(($CHI2[3] - $CHI2[1]))
674 if (( ${#STRINGS} > 0 ));
then
682 # -----------------------------------------------------------------------------------------------------
684 # This stage can be used to roughly determine the positions of the strings, tripods and modules.
685 # During this procedure, the strings are kept vertical in the global fits.
687 # -----------------------------------------------------------------------------------------------------
690 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
691 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
705 let
"A_RAD = $DX_M / $RADIUS_M" # use maximal horizontal
distance between
T-bar and emitter/
hydrophone
707 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
717 for ID in ${(
k)TRIPODS};
do
730 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
737 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
738 printf
"warning: reached maximum number of iterations %d - convergence %7.3f\n" $N $(($CHI2[3] - $CHI2[1]))
746 for DX_M
in 0.1;
do # determine (z) positions of modules
748 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
753 for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 ));
do
758 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
765 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
766 printf
"warning: reached maximum number of iterations %d - convergence %7.3f\n" $N $(($CHI2[3] - $CHI2[1]))
772 # -----------------------------------------------------------------------------------------------------
774 # This stage can be used to determine the z-positions and stretching of individual strings.
776 # -----------------------------------------------------------------------------------------------------
779 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
780 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
788 for STRING in $STRINGS[*];
do # determine stretching and (z) position of given
string
790 JEditDetector -
a $DETECTOR -
o $TMPDIR/detector_1.datx -
r "$STRING" -
d 0 >& /dev/
null
797 for MUL
in 0.005 0.001;
do
801 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
808 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
813 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
814 printf
"warning: reached maximum number of iterations %d - convergence %7.3f\n" $N $(($CHI2[3] - $CHI2[1]))
825 # -----------------------------------------------------------------------------------------------------
827 # This stage can be used to improve the determination the positions of the strings, tripods and modules.
829 # -----------------------------------------------------------------------------------------------------
832 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
833 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
847 let
"A_RAD = $DX_M / $RADIUS_M" # use maximal horizontal
distance between
T-bar and emitter/
hydrophone
849 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
859 for ID in ${(
k)TRIPODS};
do
872 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
879 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
880 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
888 for DX_M
in 0.1;
do # determine (z) positions of modules and (
x,y) positions of
strings
890 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
896 for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 ));
do
904 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
911 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
912 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
917 # -----------------------------------------------------------------------------------------------------
919 # This stage can be used to finalise the determination of the positions of the strings, tripods and modules.
921 # -----------------------------------------------------------------------------------------------------
924 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
925 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
939 let
"A_RAD = $DX_M / $RADIUS_M" # use maximal horizontal
distance between
T-bar and emitter/
hydrophone
941 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
951 for ID in ${(
k)TRIPODS};
do
964 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
971 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
972 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
980 for DX_M
in 0.05;
do # determine (z) positions of modules and (
x,y) positions of
strings
982 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
988 for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 ));
do
996 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
1003 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
1004 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
1010 # -----------------------------------------------------------------------------------------------------
1012 # This stage can be used to determine the rotations of the strings and z-positions of the anchors.
1013 # It is followed by a determination of the positions of the strings, tripods and modules.
1015 # -----------------------------------------------------------------------------------------------------
1018 cat>$TMPDIR/acoustics_fit_parameters.txt<<EOF
1019 `egrep Tmax_s
$WORKDIR/acoustics_fit_parameters.txt`
1032 for DX_M
in 0.10;
do # determine rotation of
string and z-position of anchors
1034 let
"A_RAD = $DX_M / $RADIUS_M" # use maximal horizontal
distance between
T-bar and emitter/
hydrophone
1036 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
1045 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
1052 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
1053 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
1063 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
1074 for ID in ${(
k)TRIPODS};
do
1080 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
1087 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
1088 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
1096 for DX_M
in 0.05;
do # determine (z) positions of modules and (
x,y) positions of
strings
1098 for ((
N = 0; $N < $NUMBER_OF_ITERATIONS; ++
N ));
do
1104 for (( FLOOR = 1; $FLOOR <= 18; FLOOR += 1 ));
do
1112 if (( $CHI2[3] - $CHI2[1] < $EPSILON ));
then
1119 if (( $N >= $NUMBER_OF_ITERATIONS ));
then
1120 warning
"reached maximum number of iterations $N - convergence $(($CHI2[3] - $CHI2[1]))"
then cat $TRIPOD_INITIAL<< EOF1 256877.5 4743716.7-2438.42 256815.5 4743395.0-2435.53 257096.2 4743636.0-2439.5EOFfiJEditDetector-a $DETECTOR_INITIAL-s"-1 addz -6.9"-o $DETECTOReval`JPrintDetector-a $DETECTOR-O SUMMARY`for STRING in ${STRINGS[*]};do set_variable MODULE`getModule-a $DETECTOR-L"$STRING 0"`JEditDetector-a $DETECTOR-M"$MODULE setz -2.9"-o $DETECTORdonecp-p $TRIPOD_INITIAL $TRIPODJAcoustics.sh $DETECTOR_IDcat > acoustics_trigger_parameters txt<< EOFQ=0.0;TMax_s=0.020;numberOfHits=90;EOFJAcousticsEventBuilder.sh $DETECTOR $RUNS[*]INPUT_FILES=(`ls KM3NeT_ ${(l:8::0::0:) DETECTOR_ID}_0 *${^RUNS}_event.root`) cd $WORKDIRif[!$HOMEDIR-ef $WORKDIR];then cp-p $HOMEDIR/$DETECTOR $WORKDIR cp-p $HOMEDIR/$TRIPOD $WORKDIR cp-p $HOMEDIR/${^INPUT_FILES}$WORKDIR cp-p $HOMEDIR/{acoustics_fit_parameters, acoustics_trigger_parameters, disable, hydrophone, mechanics, sound_velocity, tripod, waveform}.txt $WORKDIRfisource $JPP_DIR/examples/JAcoustics/acoustics-fit-toolkit.shtimer_startinitialise stage_1B > &stage log
then usage $script< detector >< run >< outputfile > fi case set_variable OPTION
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter= ' ')
Read test summary.
clean eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY set_variable STRING
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
then JLigier sh continue fi cat
o $QUALITY_ROOT d $DEBUG!JPlot1D f
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
static const double H
Planck constant [eV s].
then usage $script< detector specific pre-calibration script >< option > nAuxiliary script to make scan of pre stretching of detector strings(see JEditDetector)." "\nPossible options
then usage $script< input file > nFor possible input files
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
clean for KEY in pcal ccal tripod transmitter hydrophone
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
do JCanberra a $DETECTOR f $INPUT_FILE o $WORKDIR canberra[${EMITTER}\] root T $WORKDIR tripod txt V $WORKDIR sound_velocity txt M $WORKDIR mechanics txt H $WORKDIR hydrophone txt E $EMITTER $DISABLE d $DEBUG!done kill_child_processes_at_exit attach getModule a $DETECTOR typeset Z STRING typeset Z FLOOR for STRING in $STRINGS[*]
then fatal Invalid string $STRING
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
case $OPTION in clean clean
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR if do_usage *then usage $script[(input file)+] fi set_variable DEBUG set_variable WORKDIR TMPDIR
do set_variable OUTPUT_DIRECTORY $WORKDIR T
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
then JConvertDetectorFormat a $DETECTOR[1] o
set_array INPUT_FILES argv[2,$((START_INDEX_STRING-1))] set_array STRINGS
do set_variable SIGMA_NS set_variable OUTLIERS set_variable OUTPUT_FILE matrix[${ALPHA_DEG}\deg\] root $JPP JMatrixNZ a $DETECTOR f $INPUT_FILE o $OUTPUT_FILE S
do JPlot2D f $WORKDIR detector root
then $DIR JKatoomba a $DETECTOR o $WORKDIR katoomba root T $TRIPOD n sigma_s
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
then set_variable MODULE getModule a $DETECTOR L $STRING $FLOOR JEditDetector a $DETECTOR M $MODULE add $X o $DETECTOR else echo No update of detector $DETECTOR
static const JPBS_t HYDROPHONE(4, 5)
PBS of hydrophone
esac typeset A BUFFER $JPP_DIR examples JAcoustics JCreep f $INPUT_FILE BUFFER
no fit printf nominal n $STRING awk v X
do set_variable MODULE getModule a $WORKDIR detector_a datx L $STRING JEditDetector a $WORKDIR detector_a datx M $MODULE setz o $WORKDIR detector_a datx JEditDetector a $WORKDIR detector_b datx M $MODULE setz o $WORKDIR detector_b datx done echo Output stored at $WORKDIR detector_a datx and $WORKDIR tripod_a txt JDrawDetector2D a $WORKDIR detector_a datx a $WORKDIR detector_b datx L BL o detector $FORMAT $BATCH JDrawDetector2D T $WORKDIR tripod_a txt T $WORKDIR tripod_b txt L BL o tripod $FORMAT $BATCH JCompareDetector a $WORKDIR detector_a datx b $WORKDIR detector_b datx o $WORKDIR abc root &dev null for KEY in X Y Z
then echo Creating output directory
do set_variable DETECTOR_TXT $WORKDIR detector
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 JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
*fatal Wrong option $OPTION
then fatal Invalid tripod $TRIPOD
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number
then usage $script< archive >< detectorfile >< run > nGet tripod