Jpp  19.1.0-rc.1
the software that should make you happy
JCalibrateK40-PMT.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 #
4 # \author mdejong
5 #
6 version=1.0
7 script=${0##*/}
8 
9 # ------------------------------------------------------------------------------------------
10 #
11 # Utility script to test JCalibrateK40/JFitK40.
12 #
13 # ------------------------------------------------------------------------------------------
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 source $JPP_DIR/setenv.sh $JPP_DIR
21 
22 set_variable DIR $JPP_DIR/examples/JCalibrate
23 set_variable DEBUG 1
24 set_variable WORKDIR ${TMPDIR:-/tmp}/
25 set_variable: FORMAT GRAPHICS_FORMAT gif
26 set_variable+ BATCH GRAPHICS_BATCH -B
27 
28 if do_usage $*; then
29  usage "$script [working directory]"
30 fi
31 
32 case $# in
33  1) set_variable WORKDIR $1;;
34 esac
35 
36 set_variable DETECTOR $WORKDIR/detector.detx
37 set_variable BACKGROUND_HZ 5e3 500
38 set_variable numberOfSlices 6000
39 set_variable DAQ_TIMESLICE JDAQTimesliceL1
40 
41 set_variable detectorType 1
42 set_variable numberOfLines 1
43 set_variable numberOfFloors 1
44 
45 JDetector \
46  -D 1 \
47  -@ "detectorType = $detectorType" \
48  -@ "numberOfLines = $numberOfLines" \
49  -@ "numberOfFloors = $numberOfFloors" \
50  -o $DETECTOR \
51  -d $DEBUG
52 
53 set_variable MODULE `getModule -a $DETECTOR -L "1 1"`
54 
55 if ( ! reuse_file $WORKDIR/timeslice.root ); then
56 
57  JRandomTimesliceWriter \
58  -a $DETECTOR \
59  -o $WORKDIR/timeslice.root \
60  -B "$BACKGROUND_HZ" \
61  -n $numberOfSlices \
62  -d $DEBUG --!
63 fi
64 
65 if ( ! reuse_file $WORKDIR/trigger_processor.root ); then
66 
67  JTriggerProcessor \
68  -a $DETECTOR \
69  -f $WORKDIR/timeslice.root \
70  -o $WORKDIR/trigger_processor.root \
71  -C JDAQTimesliceL0 \
72  -@"ctMin=-1.0" \
73  -@"TMaxLocal_ns=25" \
74  -@"writeL1=1" \
75  -d $DEBUG
76 fi
77 
78 if (( 1 )); then
79 
80  JCalibrateK40 \
81  -f $WORKDIR/trigger_processor.root \
82  -C $DAQ_TIMESLICE \
83  -a $DETECTOR \
84  -o $WORKDIR/monitor.root \
85  -d $DEBUG
86 
87  JMergeCalibrateK40 \
88  -f $WORKDIR/monitor.root \
89  -o $WORKDIR/merge.root \
90  -d $DEBUG
91 
92  JFitK40 \
93  -a $DETECTOR \
94  -f $WORKDIR/merge.root \
95  -o $WORKDIR/fit.root \
96  -w \
97  -d $DEBUG
98 
99  for (( PMT = 0; PMT < 31; PMT += 1 )); do
100 
101  rm -f $WORKDIR/trigger_processor-\[${PMT}\].root
102 
103  $DIR/JRemovePMT \
104  -f $WORKDIR/trigger_processor.root \
105  -o $WORKDIR/trigger_processor-\[${PMT}\].root \
106  -P "-1 $PMT" \
107  -d $DEBUG
108 
109  JCalibrateK40 \
110  -f $WORKDIR/trigger_processor-\[${PMT}\].root \
111  -C $DAQ_TIMESLICE \
112  -a $DETECTOR \
113  -o $WORKDIR/monitor-\[${PMT}\].root \
114  -d $DEBUG
115 
116  JMergeCalibrateK40 \
117  -f $WORKDIR/monitor-\[${PMT}\].root \
118  -o $WORKDIR/merge-\[${PMT}\].root \
119  -d $DEBUG
120 
121  JFitK40 \
122  -a $DETECTOR \
123  -f $WORKDIR/merge-\[${PMT}\].root \
124  -o $WORKDIR/fit-\[${PMT}\].root \
125  -w \
126  -d $DEBUG
127  done
128 fi
129 
130 INPUT_FILES=(`ls -U $WORKDIR/fit.root $WORKDIR/fit-\[*\].root`)
131 
132 JVariance1D \
133  -f "${INPUT_FILES//\.root/.root:${MODULE}.1QE}" \
134  -x "101 -0.1 +0.1" \
135  -F first \
136  -o $WORKDIR/variance.root
137 
138 JScale1D \
139  -f $WORKDIR/variance.root:h0 \
140  -o $WORKDIR/scale.root \
141  -F "1.0/GetEntries" \
142  -O "nosw2"
143 
144 JPlot1D \
145  -f $WORKDIR/scale.root:h0 \
146  -y "1.0e-3 1.0" -Y \
147  -> "#DeltaQE" \
148  -\^ "number of PMTs" \
149  -s 1010 \
150  -T "" -o QE-summary.$FORMAT $BATCH
151 
152 
153 JPlot1D \
154  -w 1000x500 \
155  -f $WORKDIR/fit.root:${MODULE}.1QE \
156  -f $WORKDIR/fit-\[0\].root:${MODULE}.1QE \
157  -f $WORKDIR/fit-\[10\].root:${MODULE}.1QE \
158  -f $WORKDIR/fit-\[20\].root:${MODULE}.1QE \
159  -f $WORKDIR/fit-\[30\].root:${MODULE}.1QE \
160  -y "0.7 1.5" \
161  -> "PMT" \
162  -\^ "QE" \
163  -L TR \
164  -T "" \
165  -o QE.$FORMAT $BATCH
166