Jpp  master_rocky-43-ge265d140c
the software that should make you happy
examples/JTrigger/JTriggerEfficiencyRunByRun.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 #
3 # \author mdejong
4 #
5 version=1.0
6 script=${0##*/}
7 
8 # ------------------------------------------------------------------------------------------
9 #
10 # Utility script to test JTriggerEfficiency in run-by-run mode.
11 #
12 # ------------------------------------------------------------------------------------------
13 
14 
15 if [ -z $JPP_DIR ]; then
16  echo "Variable JPP_DIR undefined."
17  exit
18 fi
19 
20 
21 source $JPP_DIR/setenv.sh $JPP_DIR
22 
23 
24 set_variable DEBUG 2
25 set_variable WORKDIR ${TMPDIR:-/tmp}/
26 set_variable INPUT_FILE $JPP_DATA/sirene.root
27 set_variable DETECTOR $JPP_DATA/km3net_reference.detx
28 set_variable TRIGGER $JPP_DATA/trigger_parameters_arca.txt
29 set_variable BACKGROUND_HZ 5.0e3
30 set_variable FRAME_DURATION_NS 100.0e6
31 set_variable NUMBER_OF_PMTS 31
32 
33 
34 if do_usage $*; then
35  usage "$script [input file [working directory]]"
36 fi
37 
38 case $# in
39  2) set_variable WORKDIR $2;&
40  1) set_variable INPUT_FILE $1;;
41 esac
42 
43 set_variable DETECTOR_OUT_OF_SYNC $WORKDIR/detector_out_of_sync.detx
44 set_variable DAQ_FILE_OUT_OF_SYNC $WORKDIR/trigger_efficiency_out_of_sync.root
45 set_variable OUTPUT_FILE $WORKDIR/trigger_efficiency.root
46 set_variable TRIGGEREFFICIENCY_TURBOT $WORKDIR/turbot.detx
47 set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY Y
48 
49 
50 function clean()
51 {
52  rm -f $DETECTOR_OUT_OF_SYNC
53  rm -f $DAQ_FILE_OUT_OF_SYNC
54  rm -f $OUTPUT_FILE
55  rm -f $TRIGGEREFFICIENCY_TURBOT
56 }
57 
58 
59 clean
60 
61 eval `JPrintDetector -a $DETECTOR -O IDENTIFIER`
62 eval `JPrintDetector -a $DETECTOR -O SUMMARY`
63 
64 set_variable STRING ${STRINGS[1]}
65 set_variable MODULE `getModule -a $DETECTOR -L "$STRING 10"`
66 
67 
68 # distort detector file
69 
70 JEditDetector \
71  -a $DETECTOR \
72  -o $DETECTOR_OUT_OF_SYNC \
73  -M "$MODULE add $FRAME_DURATION_NS"
74 
75 # generate fake raw data file, with distorted detector file.
76 # make sure to write summary data for JTriggerEfficiency and
77 # L2 data for JTurbot (inside JTriggerEfficiencyRunByRun.sh).
78 
79 JTriggerEfficiency \
80  -a ${DETECTOR_OUT_OF_SYNC} \
81  -f ${INPUT_FILE} \
82  -o ${DAQ_FILE_OUT_OF_SYNC} \
83  -@ ${TRIGGER} \
84  -@ "writeL0 = 0;" \
85  -@ "writeL1 = 0;" \
86  -@ "writeL2 = 1;" \
87  -@ "writeSN = 0;" \
88  -@ "writeSummary = 1;" \
89  -d ${DEBUG} \
90  -B "$BACKGROUND_HZ" \
91  --!
92 
93 rm -f $OUTPUT_FILE
94 
95 $JPP_BIN/JTriggerEfficiencyRunByRun.sh \
96  $DETECTOR \
97  $DETECTOR \
98  $INPUT_FILE \
99  $OUTPUT_FILE \
100  $DAQ_FILE_OUT_OF_SYNC
101 
102 for (( PMT = 0; $PMT != $NUMBER_OF_PMTS; ++PMT )); do
103 
104  set_variable RESULT `getPMTStatus -a $TRIGGEREFFICIENCY_TURBOT -P "$MODULE $PMT" | sed -n 's/.*OUT_OF_SYNC *\‍([0-1]\‍)/\1/p'`
105 
106  echo "PMT ($MODULE,$PMT) has OUT_OF_SYNC $RESULT"
107 
108  if (( $RESULT != 1 )); then
109  fatal "PMT ($MODULE,$PMT) has OUT_OF_SYNC $RESULT != 1"
110  fi
111 done
112 
113 set_array RESULT `$JPP_DIR/examples/JTrigger/JDAQHit -f $OUTPUT_FILE | grep "^ *$MODULE "`
114 
115 printf "Module %10d: %8d %8d\n" $MODULE $RESULT[2] $RESULT[3]
116 
117 if (( ${#RESULT} >= 3 )); then
118 
119  if (( $RESULT[2] >= 20 )); then
120  fatal "Module $MODULE has too many trigger hits $RESULT[2]"
121  fi
122 
123  if (( $RESULT[3] <= 20 )); then
124  fatal "Module $MODULE has too few snapshot hits $RESULT[3]"
125  fi
126 else
127 
128  fatal "Module $MODULE has no data."
129 fi
130 
131 clean