Jpp
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 /tmp/
25 
26 if ( do_usage $* ); then
27  usage "$script [working directory]"
28 fi
29 
30 case $# in
31  1) set_variable WORKDIR $1;;
32 esac
33 
34 set_variable DETECTOR $WORKDIR/detector.detx
35 set_variable BACKGROUND_HZ 5e3 500
36 # 50 5 0.5
37 set_variable numberOfSlices 6000
38 set_variable DAQ_TIMESLICE JDAQTimesliceL1
39 
40 set_variable detectorType 1
41 set_variable numberOfLines 1
42 set_variable numberOfFloors 1
43 
44 JDetector \
45  -D 1 \
46  -@ "detectorType = $detectorType" \
47  -@ "numberOfLines = $numberOfLines" \
48  -@ "numberOfFloors = $numberOfFloors" \
49  -o $DETECTOR -V V2 \
50  -d $DEBUG
51 
52 set_variable MODULE `getModule -a $DETECTOR -L "1 1"`
53 
54 if ( ! reuse_file $WORKDIR/timeslice.root ); then
55 
56  JRandomTimesliceWriter \
57  -a $DETECTOR \
58  -o $WORKDIR/timeslice.root \
59  -B "$BACKGROUND_HZ" \
60  -n $numberOfSlices \
61  -d $DEBUG --!
62 fi
63 
64 if ( ! reuse_file $WORKDIR/trigger_processor.root ); then
65 
66  JTriggerProcessor \
67  -a $DETECTOR \
68  -f $WORKDIR/timeslice.root \
69  -o $WORKDIR/trigger_processor.root \
70  -@"ctMin=-1.0" \
71  -@"TMaxLocal_ns=25" \
72  -@"writeL1=1" \
73  -d $DEBUG
74 fi
75 
76 if (( 1 )); then
77 
78  JCalibrateK40 \
79  -f $WORKDIR/trigger_processor.root \
80  -C $DAQ_TIMESLICE \
81  -a $DETECTOR \
82  -o $WORKDIR/monitor.root \
83  -d $DEBUG
84 
85  JMergeCalibrateK40 \
86  -f $WORKDIR/monitor.root \
87  -o $WORKDIR/merge.root \
88  -d $DEBUG
89 
90  JFitK40 \
91  -a $DETECTOR \
92  -f $WORKDIR/merge.root \
93  -o $WORKDIR/fit.root \
94  -w \
95  -d $DEBUG
96 fi
97 
98 if (( 1 )); then
99 
100  for (( PMT = 0; PMT < 31; PMT += 1 )); do
101 
102  if ( ! reuse_file $WORKDIR/trigger_processor-\[${PMT}\].root ); then
103 
104  $DIR/JRemovePMT \
105  -f $WORKDIR/trigger_processor.root \
106  -o $WORKDIR/trigger_processor-\[${PMT}\].root \
107  -P "-1 $PMT" \
108  -d $DEBUG
109  fi
110 
111  if (( 1 )); then
112 
113  JCalibrateK40 \
114  -f $WORKDIR/trigger_processor-\[${PMT}\].root \
115  -C $DAQ_TIMESLICE \
116  -a $DETECTOR \
117  -o $WORKDIR/monitor-\[${PMT}\].root \
118  -d $DEBUG
119 
120  JMergeCalibrateK40 \
121  -f $WORKDIR/monitor-\[${PMT}\].root \
122  -o $WORKDIR/merge-\[${PMT}\].root \
123  -d $DEBUG
124 
125  JFitK40 \
126  -a $DETECTOR \
127  -f $WORKDIR/merge-\[${PMT}\].root \
128  -o $WORKDIR/fit-\[${PMT}\].root \
129  -w \
130  -d $DEBUG
131  fi
132  done
133 fi
134 
135 typeset -a INPUT_FILES
136 
137 HISTOGRAMS=`ls -U $WORKDIR/fit.root $WORKDIR/fit-\[*\].root | eval sed 's/.root/.root:${MODULE}.1QE/g'`
138 
139 JVariance1D \
140  -f "$HISTOGRAMS[*]" \
141  -x "101 -0.1 +0.1" \
142  -F first \
143  -o $WORKDIR/variance.root
144 
145 JScale1D \
146  -f $WORKDIR/variance.root:h0 \
147  -o $WORKDIR/scale.root \
148  -F "1.0/GetEntries"
149 
150 JPlot1D \
151  -f $WORKDIR/scale.root:h0 \
152  -y "1.0e-3 1.0" -Y \
153  -> "#DeltaQE" \
154  -\^ "number of PMTs" \
155  -s 1010 \
156  -T "" -o QE-summary.gif
157 
158 exit
159 
160 JPlot1D \
161  -w 1000x500 \
162  -f $WORKDIR/fit.root:${MODULE}.1QE \
163  -f $WORKDIR/fit-\[0\].root:${MODULE}.1QE \
164  -f $WORKDIR/fit-\[10\].root:${MODULE}.1QE \
165  -f $WORKDIR/fit-\[20\].root:${MODULE}.1QE \
166  -f $WORKDIR/fit-\[30\].root:${MODULE}.1QE \
167  -y "0.7 1.5" \
168  -> "PMT" \
169  -\^ "QE" \
170  -L TR \
171  -T "" \
172  -o QE.gif
173