Jpp  15.0.3
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hydrophone-t0:fit.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 script=${0##*/}
3 
4 if [ -z $JPP_DIR ]; then
5  echo "Variable JPP_DIR undefined."
6  exit
7 fi
8 
9 source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10 
11 zmodload zsh/mathfunc
12 
13 set_variable: DEBUG ACOUSTICS_DEBUG 2
14 set_variable: WORKDIR ACOUSTICS_WORKDIR ./
15 set_variable: XMIN HYDROPHONE_XMIN -1.0e-3
16 set_variable: XMAX HYDROPHONE_XMAX +1.0e-3
17 set_variable: FORMAT GRAPHICS_FORMAT gif
18 set_variable+ BATCH GRAPHICS_BATCH -B
19 
20 if do_usage $*; then
21  usage "$script <detector file> <string identifier> [<detector file>]"
22 fi
23 
24 if (( $# == 0 || $# > 3 )); then
25  fatal "Wrong number of arguments."
26 fi
27 
30 set_array QUANTILES 0.333 0.666
31 set_variable FORMULA "[0] * exp(-0.5 * (x-[1])*(x-[1]) / ([2]*[2]))"
32 set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"`
33 
34 source JAcoustics.sh --
35 
36 typeset -A TRIPODS
37 
38 get_tripods $WORKDIR/tripod.txt TRIPODS
39 
40 XMEAN=(0.0 0.0)
41 STDEV=(0.0 0.0)
42 TOTAL=0.0
43 
44 for TRIPOD in ${(k)TRIPODS[*]}; do
45 
46  JPrintQuantiles \
47  -f "hydrophone.root:${MODULE}.${TRIPOD}" \
48  -Q "$QUANTILES[*]" \
49  -d 0 | read -A RESULT
50 
51  if (( ${#RESULT} == ${#QUANTILES} )); then
52 
53  P1=$((0.5*($RESULT[-1] + $RESULT[1]))) # average
54  P2=$((0.5*($RESULT[-1] - $RESULT[1]))) # width
55 
56  JFit \
57  -f "hydrophone.root:${MODULE}.${TRIPOD}" \
58  -o ${TMPDIR:-/tmp}/fit.root \
59  -F "$FORMULA" \
60  -@"p0 = GetMaximum * 0.8" \
61  -@"p1 = $P1" \
62  -@"p2 = $P2" \
63  -d 0 >& /dev/null
64 
65  JPrintFit -f ${TMPDIR:-/tmp}/fit.root:\.\* -@p1 | read -A P1
66  JPrintFit -f ${TMPDIR:-/tmp}/fit.root:\.\* -@p2 | read -A P2
67 
68  VALUE=$((1.0e+6 * $P1[1])) # [us]
69  TOTAL=$(($TOTAL + 1.0))
70 
71  if (( $TOTAL == 1.0 )); then
72  XMEAN[1]=$VALUE
73  STDEV[1]=0.0
74  else
75  XMEAN[2]=$(($XMEAN[1] + ($VALUE - $XMEAN[1]) / $TOTAL))
76  STDEV[2]=$(($STDEV[1] + ($VALUE - $XMEAN[1]) * ($VALUE - $XMEAN[2])))
77  XMEAN[1]=$XMEAN[2]
78  STDEV[1]=$STDEV[2]
79  fi
80 
81  printf "string %4d tripod %2d %5.0f %3.0f us\n" $STRING $TRIPOD $(($P1[1] * 1.0e6)) $(($P2[1] * 1.0e6))
82  fi
83 done
84 
85 if (( $TOTAL > 1.0 )); then
86  printf "string %4d mean RMS %5.0f %3.0f us\n" $STRING $XMEAN[1] $((sqrt($TOTAL * $STDEV[1] / ($TOTAL * ($TOTAL - 1.0)))))
87 fi
88 
89 typeset -Z 4 STRING
90 
91 JOpera1D \
92  -f hydrophone.root:$MODULE \
93  -o ${TMPDIR:-/tmp}/H\[${STRING}\].root \
94  -u Add -d 0
95 
96 JPrintQuantiles \
97  -f ${TMPDIR:-/tmp}/H\[${STRING}\].root:Add \
98  -Q "$QUANTILES[*]" \
99  -d 0 | read -A RESULT
100 
101 P1=$((0.5*($RESULT[-1] + $RESULT[1]))) # average
102 P2=$((0.5*($RESULT[-1] - $RESULT[1]))) # width
103 
104 JFit \
105  -f ${TMPDIR:-/tmp}/H\[${STRING}\].root:Add \
106  -o ${TMPDIR:-/tmp}/F\[${STRING}\].root \
107  -F "$FORMULA" \
108  -@"p0 = GetMaximum * 0.8" \
109  -@"p1 = $P1" \
110  -@"p2 = $P2" \
111  -d $DEBUG
112 
113 JPrintFit -f ${TMPDIR:-/tmp}/F\[${STRING}\].root:Add -@p1 | read -A P1
114 JPrintFit -f ${TMPDIR:-/tmp}/F\[${STRING}\].root:Add -@p2 | read -A P2
115 
116 printf "string %4d t0 %6.0f +/- %6.0f us\n" $STRING $(($P1[1] * 1.0e6)) $(($P1[2] * 1.0e6))
117 printf "string %4d sigma %6.0f +/- %6.0f us\n" $STRING $(($P2[1] * 1.0e6)) $(($P2[2] * 1.0e6))
118 
119 if (( ${#} == 3 )); then
120 
122 
123  set_array P1 `JPrintFit -f ${TMPDIR:-/tmp}/F\[${STRING}\].root:Add -@p1`
124 
125  let TIME_OFFSET_NS="$P1[1] * 1.0e9"
126 
127  printf "Add time offset %12.6d to hydrophone.\n" $TIME_OFFSET_NS
128 
129  JEditDetector \
130  -a $DETECTOR \
131  -o $DETECTOR \
132  -M "$MODULE SUB $TIME_OFFSET_NS" \
133  -d $DEBUG
134 fi
135 
136 JPlot1D \
137  -f ${TMPDIR:-/tmp}/F\[${STRING}\].root:Add \
138  -x "$XMIN $XMAX" \
139  -\> "#Deltat [s]" \
140  -\^ "number of events [a.u.]" \
141  -N "X 505" \
142  -T "$STRING" \
143  -o hydrophonet0_${STRING}.$FORMAT $BATCH
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn only modules within the given range of floors are used fi case set_variable RANGE $argv[3]
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
Q(UTCMax_s-UTCMin_s)-livetime_s
TPaveText * p1
do $JPP JMEstimator M
Definition: JMEstimator.sh:37
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
o $QUALITY_ROOT d $DEBUG!JPlot1D f
Definition: JDataQuality.sh:66
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
static const double H
Planck constant [eV s].
exit
Definition: JPizza.sh:36
then echo
then fatal Invalid string $STRING
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:20
do set_variable OUTPUT_DIRECTORY $WORKDIR T
&set_variable TRIPOD
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 ${TMPDIR:-/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 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
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable DEBUG set_variable WORKDIR
Definition: JLegolas.sh:20
then awk F
* usage
then JConvertDetectorFormat a $DETECTOR[1] o
&set_variable FORMULA
p2
Definition: module-Z:fit.sh:74
then XMEAN[1]
do JPlot2D f $WORKDIR detector root
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
then P1
then JCalibrateToT a
Definition: JTuneHV.sh:116
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
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
then display $WORKDIR
Definition: plot-Domino.sh:128
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 let XMIN
then printf string mean RMS us n $STRING $XMEAN((sqrt($TOTAL *$STDEV[1]/($TOTAL *($TOTAL-1.0))))) fi typeset-Z 4 STRING JOpera1D-f hydrophone.root
set_variable DETECTOR
double u[N+1]
Definition: JPolint.hh:739
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
Definition: JCanberra.sh:42
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
script
Definition: JAcoustics.sh:2
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 QUANTILES