Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JCalibrateStrings.sh
Go to the documentation of this file.
1#!/usr/bin/env zsh
2script=${0##*/}
3
4if [ -z $JPP_DIR ]; then
5 echo "Variable JPP_DIR undefined."
6 exit
7fi
8
9source $JPP_DIR/setenv.sh $JPP_DIR >& /dev/null
10
11if do_usage $*; then
12 usage "$script <detector file> <input file>+ <string number>+"
13fi
14
15if (( $# < 3 )); then
16 fatal "Not enough arguments."
17fi
18
19set_variable INDEX_STRING_START -1
20
21while [[ ${${argv[${START_INDEX_STRING}]}##*.} != "root" ]]; do
22 set_variable START_INDEX_STRING $(( START_INDEX_STRING - 1 ))
23done
24
25set_variable DETECTOR ${argv[1]}
26set_array INPUT_FILES ${argv[2, $(( START_INDEX_STRING - 1 )) ]}
27set_array STRINGS ${argv[ $(( START_INDEX_STRING )), -1 ]}
28
29set_variable TRIGGER_PARAMETERS `echo "trigger3DMuon.enabled=1;TMaxEvent_ns=15000;"`
30set_variable JDAQ_TIMESLICE JDAQTimesliceSN
31set_variable FORMULA "[0] + ([3]*( ([1]^(2*[4])) / (([1]*[1] + (2^(1/[4])-1) * ((x-[2])*(x-[2])) ) )))^[4]"
32set_variable WORKDIR ${TMPDIR:-/tmp}
33
34mkdir -p -- ${WORKDIR}
35
36REMOVE=($STRINGS)
37
38OUTPUT_OFFSETS=""
39
40for STRING in "${STRINGS[@]}"; do
41
42 REMOVE[$REMOVE[(i)$STRING]]=()
43
44 RM=()
45 for R in "${REMOVE[@]}"; do
46 RM+=("-r ${R}-${R}")
47 done
48
49 set_variable REDUCED_DETECTOR reduced.detx
50
51 set_variable GRAPH_TXT graph-time.txt
52 set_variable GRAPH_ROOT graph-time.root
53 set_variable FIT_TXT graph-fit.txt
54 set_variable FIT_ROOT graph-fit.root
55
56 rm -f ${WORKDIR}/${REDUCED_DETECTOR}
57 rm -f ${WORKDIR}/${GRAPH_TXT}
58
59 JEditDetector \
60 -a ${DETECTOR} \
61 ${RM} \
62 -o ${WORKDIR}/${REDUCED_DETECTOR} --!
63
64 for TIME_OFFSET_NS in -200 -100 -20 -5 0 +5 +20 +100 +200; do
65
66 JEditDetector \
67 -a ${WORKDIR}/${REDUCED_DETECTOR} \
68 -s "$STRING add $TIME_OFFSET_NS" \
69 -o ${WORKDIR}/detector.detx --!
70
71 set_variable OUTPUT_FILE JTriggerProcessor.root
72
73 rm -f ${WORKDIR}/${OUTPUT_FILE}
74
75 JTriggerProcessor \
76 -a ${WORKDIR}/detector.detx \
77 -f ${INPUT_FILES} \
78 -C ${JDAQ_TIMESLICE} \
79 -@ ${TRIGGER_PARAMETERS} \
80 -o ${WORKDIR}/${OUTPUT_FILE} --!
81
82 set_variable N_TRIGGERS `JPrintTree -f ${WORKDIR}/${OUTPUT_FILE} -@ "type = JDAQEvent" -k number_of_entries`
83
84 printf "%5.3f %12.3f\n" ${TIME_OFFSET_NS} ${N_TRIGGERS} >> ${WORKDIR}/${GRAPH_TXT}
85
86 done
87
88 JGraph \
89 -f ${WORKDIR}/${GRAPH_TXT} \
90 -o ${WORKDIR}/${GRAPH_ROOT}
91
92 JFit \
93 -f ${WORKDIR}/${GRAPH_ROOT}:\.\* \
94 -o ${WORKDIR}/${FIT_ROOT} \
95 -F "$FORMULA" \
96 -@"p0 = 0" \
97 -@"p1 = GetRMS" \
98 -@"p2 = GetMean" \
99 -@"p3 = GetMaximum" \
100 -@"p4 = 1" \
101 -d1 >> ${WORKDIR}/${FIT_TXT} 2>&1
102
103 set_variable OPTIMAL_OFFSET `JTestFit -f ${WORKDIR}/${FIT_ROOT}:${GRAPH_TXT} -@ "p2 -1000 1000" -d 3 | awk '/p2/ {print $2}'`
104
105 JEditDetector \
106 -a ${DETECTOR} \
107 -s "$STRING add $OPTIMAL_OFFSET" \
108 -o ${DETECTOR} --!
109
110 OUTPUT_OFFSETS="${OUTPUT_OFFSETS} JEditDetector -a ${DETECTOR} -S \"$STRING add $OPTIMAL_OFFSET\" -o ${WORKDIR}/${OUTPUT_DETECTOR} --! \n"
111
112done
113
114echo -e "${OUTPUT_OFFSETS}"