Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JAcceptanceTest.sh
Go to the documentation of this file.
1 #!/bin/zsh
2 
3 version=1.0
4 script=${0##*/}
5 
6 
7 if [ -z $JPP_DIR ]; then
8  echo "Variable JPP_DIR undefined."
9  exit
10 fi
11 
12 source $JPP_DIR/setenv.sh $JPP_DIR
13 
14 set_variable DEFAULT_VALUE \"NULL\"
15 set_variable: FORMAT GRAPHICS_FORMAT gif
16 set_variable+ BATCH GRAPHICS_BATCH -B
17 
18 if do_usage $*; then
19  usage "$script <daq file> <detector file> <output directory>"
20 fi
21 
22 if (( $# != 3)); then
23  fatal "Wrong number of arguments."
24 fi
25 
26 set_variable OUTPUT_DIR $argv[3]
27 set_variable DETECTOR_FILE $argv[2]
28 set_variable DAQ_FILE $argv[1]
29 
30 set_variable OUTPUT_JC_TOT ${OUTPUT_DIR}/$(basename $DAQ_FILE .root)_JC_TOT.root
31 set_variable OUTPUT_JMERGE_TOT ${OUTPUT_DIR}/$(basename $DAQ_FILE .root)_JMerge_TOT.root
32 set_variable OUTPUT_JFIT_TOT ${OUTPUT_DIR}/$(basename $DAQ_FILE .root)_JFit_TOT.root
33 set_variable PMT_PARAMETERS_FILE ${OUTPUT_DIR}/$(basename $DAQ_FILE .root)_TOT.txt
34 set_variable OUTPUT_JDA ${OUTPUT_DIR}/$(basename $DAQ_FILE .root)_JDA.root
35 
36 
37 set_variable SELECTOR JDAQTimesliceL0
38 
39 JCalibrateToT \
40  -a ${DETECTOR_FILE} \
41  -C ${SELECTOR} \
42  -O filter \
43  -f ${DAQ_FILE} \
44  -o ${OUTPUT_JC_TOT} \
45  --!
46 
47 JMergeCalibrateToT \
48  -f ${OUTPUT_JC_TOT} \
49  -o ${OUTPUT_JMERGE_TOT} \
50  --!
51 
52 JFitToT \
53  -P ${PMT_PARAMETERS_FILE} \
54  -a ${DETECTOR_FILE} \
55  -f ${OUTPUT_JMERGE_TOT} \
56  -o ${OUTPUT_JFIT_TOT} \
57  -x "0.0 -1.0" \
58  -w \
59  --!
60 
61 JDomAnalyser \
62  -f ${DAQ_FILE} \
63  -o ${OUTPUT_JDA} \
64  -C ${SELECTOR} \
65  --!
66 
67 #---- loop over DOMs and for each print the gains (for copying into DIA interface)
68 
69 eval `JPrintDetector -a $DETECTOR_FILE -O SUMMARY`
70 
71 kill_child_processes_at_exit
72 
73 set_variable NUMBER_OF_PMTS 31
74 
75 attach getModule -a $DETECTOR_FILE
76 
77 for STRING in $STRINGS[*]; do
78  for (( FLOOR = $FIRST_FLOOR; $FLOOR <= $LAST_FLOOR; FLOOR += 1 )); do
79 
80  GAINS=()
81  RATES=()
82 
83  sput $STRING $FLOOR
84  sget MODULE
85 
86  for (( PMT = 0; $PMT < $NUMBER_OF_PMTS; PMT += 1 )); do
87 
88  set_array PMTparameters $(JPrintPMTParameters -P ${PMT_PARAMETERS_FILE} -p "$MODULE.$PMT" -k "gain")
89  set_variable gain ${PMTparameters[2]}
90 
91  set_variable rate $(JPrintResult -f ${OUTPUT_JDA}:rate_${MODULE}.${PMT}$ -F "GetMean")
92 
93  if [[ -z $rate ]]; then
94  rate=$DEFAULT_VALUE
95  fi
96  if [[ -z $gain ]]; then
97  gain=$DEFAULT_VALUE
98  fi
99 
100  GAINS+=($gain)
101  RATES+=($rate)
102 
103  JPlot1D \
104  -f ${OUTPUT_JFIT_TOT}:${MODULE}\.${(l(2)(0))PMT}\.1ToT \
105  -> "ToT [ns]" \
106  -T "${MODULE}:${(l(2)(0))PMT}" \
107  -o ${OUTPUT_DIR}/gain_${(l(2)(0))PMT}.$FORMAT $BATCH
108 
109  JPlot1D \
110  -f ${OUTPUT_JDA}:rate_${MODULE}.${PMT}$ \
111  -X \
112  -> "Rate [kHz]" \
113  -T "${MODULE}:${(l(2)(0))PMT}" \
114  -o ${OUTPUT_DIR}/rate_${(l(2)(0))PMT}.$FORMAT $BATCH
115 
116  JPlot1D \
117  -f ${OUTPUT_JDA}:time_${MODULE}.${PMT}$ \
118  -> "Frame Index" \
119  -\^ "Rate [kHz]" \
120  -O "hist" \
121  -T "${MODULE}:${(l(2)(0))PMT}" \
122  -o ${OUTPUT_DIR}/time_${(l(2)(0))PMT}.$FORMAT $BATCH
123 
124  done
125 
126  JSON="{\n\"module\":$MODULE,\n"
127 
128  JSON+="\"gains\":["
129  JSON+=$(IFS=, ; echo "${GAINS[*]}")
130  JSON+="],\n"
131 
132  JSON+="\"rates\":["
133  JSON+=$(IFS=, ; echo "${RATES[*]}")
134  JSON+="]\n}"
135 
136  echo -e ${JSON}
137 
138  montage \
139  -tile 6x6 \
140  -geometry +0+0 \
141  ${OUTPUT_DIR}/gain*.$FORMAT \
142  ${OUTPUT_DIR}/${MODULE}_gain.$FORMAT >& /dev/null
143 
144  montage \
145  -tile 6x6 \
146  -geometry +0+0 \
147  ${OUTPUT_DIR}/rate*.$FORMAT \
148  ${OUTPUT_DIR}/${MODULE}_rate.$FORMAT >& /dev/null
149 
150  montage \
151  -tile 6x6 \
152  -geometry +0+0 \
153  ${OUTPUT_DIR}/time*.$FORMAT \
154  ${OUTPUT_DIR}/${MODULE}_time.$FORMAT >& /dev/null
155  done
156 done
157 
158 rm -f ${OUTPUT_DIR}/gain*.$FORMAT
159 rm -f ${OUTPUT_DIR}/rate*.$FORMAT
160 rm -f ${OUTPUT_DIR}/time*.$FORMAT
161 
162 detach
163 
164 
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
Definition: JDataQuality.sh:19
version
Definition: JEditTuneHV.sh:5
static const JPBS_t PMT(3, 4, 2, 3)
PBS of photo-multiplier tube (PMT)
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
std::vector< size_t > ns
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Definition: JDataQuality.sh:76
*fatal Wrong number of arguments
exit
Definition: JPizza.sh:36
then
Definition: datalogs.sh:31
const int n
Definition: JPolint.hh:786
then rm
Definition: sftpput.zsh:30
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable
Definition: JAcoustics.sh:21
then usage $script< directory A >< directoryB > nIn each directory
then $JPP_DIR examples JDetector JToT o $OUTPUT_FILE n N $NPE P gain
Definition: JToT.sh:47
Template Frame for ARS data.
Definition: frame.hh:12
do set_variable DETECTOR_TXT $WORKDIR detector
then echo
Definition: JQAQC.sh:90
static JNullStream null
Null I/O stream.
Definition: JNullStream.hh:51
esac done
Definition: JAddHDE.sh:21