1 | #!/bin/bash
|
---|
2 |
|
---|
3 | #####################################
|
---|
4 | #
|
---|
5 | # CONFIGURATION VARIABLES
|
---|
6 | #
|
---|
7 | #####################################
|
---|
8 | #temporary text files
|
---|
9 | colDescFile="coldesc.lis"
|
---|
10 | dataFile="data.lis"
|
---|
11 | keywordsFile="keywords.lis"
|
---|
12 | logfile="logfile.txt"
|
---|
13 | #date for which the script should be run
|
---|
14 | year=$1
|
---|
15 | month=$2
|
---|
16 | day=$3
|
---|
17 | #target folders
|
---|
18 | #sourceFolder="/data00/fact-construction"
|
---|
19 | sourceFolder="/archive/fact/rev_1"
|
---|
20 | targetFolder=`pwd`
|
---|
21 |
|
---|
22 | #make source folder relative to target
|
---|
23 | common_part=$targetFolder
|
---|
24 | back=
|
---|
25 | while [ "$common_part" != "/" ] && [ "${sourceFolder#$common_part}" == "$sourceFolder" ]
|
---|
26 | do
|
---|
27 | common_part=`dirname $common_part`
|
---|
28 | back="../${back}"
|
---|
29 | # echo $common_part $back
|
---|
30 | done
|
---|
31 | baseFolder=$back${sourceFolder#$common_part}
|
---|
32 |
|
---|
33 | #remove useless artifacts from baseFolder
|
---|
34 | pathChanged="true"
|
---|
35 | while [ "$pathChanged" == "true" ]
|
---|
36 | do
|
---|
37 | pathChanged="false"
|
---|
38 | newBaseFolder=`echo $baseFolder | sed -e 's/\/\//\//g'`
|
---|
39 | if [ "$newBaseFolder" != "$baseFolder" ]
|
---|
40 | then
|
---|
41 | pathChanged="true"
|
---|
42 | echo "$baseFolder >>> $newBaseFolder"
|
---|
43 | fi
|
---|
44 | baseFolder=$newBaseFolder
|
---|
45 | done
|
---|
46 |
|
---|
47 | rawFolder=$baseFolder"/raw/"$year"/"$month"/"$day
|
---|
48 | auxFolder=$baseFolder"/aux/"$year"/"$month"/"$day
|
---|
49 | tempFile="./tempFile.txt"
|
---|
50 | tempFits="./tempFits.fits"
|
---|
51 | #input aux files
|
---|
52 | trackingTable="DRIVE_CONTROL_TRACKING_POSITION"
|
---|
53 | trackingFile=$auxFolder"/"$year$month$day"."$trackingTable".fits"
|
---|
54 | triggerTable="FTM_CONTROL_TRIGGER_RATES"
|
---|
55 | triggerFile=$auxFolder"/"$year$month$day"."$triggerTable".fits"
|
---|
56 | staticTable="FTM_CONTROL_STATIC_DATA"
|
---|
57 | staticFile=$auxFolder"/"$year$month$day"."$staticTable".fits"
|
---|
58 | voltagesTable="BIAS_CONTROL_VOLTAGE"
|
---|
59 | voltagesFile=$auxFolder"/"$year$month$day"."$voltagesTable".fits"
|
---|
60 | currentsTable="BIAS_CONTROL_CURRENT"
|
---|
61 | currentFile=$auxFolder"/"$year$month$day"."$currentsTable".fits"
|
---|
62 |
|
---|
63 | basePathAux=$auxFolder"/"$year$month$day
|
---|
64 |
|
---|
65 | auxTable="BIAS_CONTROL_NOMINAL"
|
---|
66 | auxDesc="Some_Description"
|
---|
67 | auxFile=$basePathAux"."$auxTable".fits"
|
---|
68 |
|
---|
69 | ###########################################
|
---|
70 | #
|
---|
71 | # WRITE EXTRA AUX FILE
|
---|
72 | # Writes an extra entry to the data file
|
---|
73 | # Also checks for existence of said file
|
---|
74 | #
|
---|
75 | ##########################################
|
---|
76 | function writeExtraAuxFile() {
|
---|
77 |
|
---|
78 | auxFile=$basePathAux"."$auxTable".fits"
|
---|
79 | if ! [ -e $auxFile ]
|
---|
80 | then
|
---|
81 | dummy=3
|
---|
82 | #echo "WARNING: Optionnal aux file "$auxFile" not found." | tee -a $logfile 2>&1
|
---|
83 | else
|
---|
84 | echo $auxTable" BINTABLE URL ../../../"$auxFile" 1 1 "$auxDesc >> $dataFile
|
---|
85 | fi
|
---|
86 | }
|
---|
87 |
|
---|
88 | currentEntry=""
|
---|
89 | roi=-1
|
---|
90 | roiTM=-1
|
---|
91 | runnumber=-1
|
---|
92 | doNotDoThisEntry="false"
|
---|
93 | ###########################################
|
---|
94 | #
|
---|
95 | # WRITE HEADER KEYS TO INPUT FILE
|
---|
96 | # Extract and write the header keywords to the above devined output text files.
|
---|
97 | # These text files are then meant to feed the fits creation tool fcreate
|
---|
98 | # Large parts of this function code were retaken from Daniela's scripts
|
---|
99 | #
|
---|
100 | ###########################################
|
---|
101 | function writeHeaderKeysToInputFile () {
|
---|
102 | #echo "Writing header keys for "$currentEntry
|
---|
103 | #get all the missing data (everything appart from roi and roiTM)
|
---|
104 | runtype=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep RUNTYPE | grep -E -o "['][a-z-]+[']" | sed -e "s/'//g"`
|
---|
105 | numevents=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep Events | grep -E -o '[0-9]+'`
|
---|
106 | numphys=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRG ' | grep -E -o '[0-9]+'`
|
---|
107 | numext1=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGEXT1' | grep -E -o "'[0-9]+'" | grep -E -o '[0-9]+'`
|
---|
108 | numext2=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGEXT2' | grep -E -o "'[0-9]+'" | grep -E -o '[0-9]+'`
|
---|
109 | numelp=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGLPE' | grep -E -o '[0-9]+'`
|
---|
110 | numilp=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGLPI' | grep -E -o '[0-9]+'`
|
---|
111 | numoth=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGMISC' | grep -E -o '[0-9]+'`
|
---|
112 | numped=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGPED' | grep -E -o '[0-9]+'`
|
---|
113 | numtime=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'NTRGTIM' | grep -E -o '[0-9]+'`
|
---|
114 | dateRaw=$year$month$day
|
---|
115 |
|
---|
116 | if [ "$runtype" == "" ]
|
---|
117 | then
|
---|
118 | runtype="N/A"
|
---|
119 | fi
|
---|
120 | if [ "$numevents" == "" ]
|
---|
121 | then
|
---|
122 | numevents="0"
|
---|
123 | fi
|
---|
124 |
|
---|
125 | # dateRaw=`echo $currentEntry | grep -E -o '20[1-3][0-9][01][0-9][012][0-9]'`
|
---|
126 | #echo "dateRaw: "$dateRaw" yearmonthday: "$year$month$day
|
---|
127 |
|
---|
128 | # in newest data start time is in DATE-OBS
|
---|
129 | # in older data start time is in TSTART
|
---|
130 | # in the beginning TSTART was empty
|
---|
131 | runstart=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep DATE-OBS | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{6}'`
|
---|
132 | runstart2=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep TSTART | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{6}'`
|
---|
133 | if [ "$runstart" == "" ]
|
---|
134 | then
|
---|
135 | if [ "$runstart2" == "" ]
|
---|
136 | then
|
---|
137 | runstart=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep DATE | grep -v 'DATE-' | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{6}'`
|
---|
138 | else
|
---|
139 | runstart=$runstart2
|
---|
140 | fi
|
---|
141 | fi
|
---|
142 | # in newest data start time is in DATE-END
|
---|
143 | # in older data start time is in TSTOP
|
---|
144 | # in the beginning TSTOP was empty
|
---|
145 | runstop=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep DATE-END | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{6}'`
|
---|
146 | runstop2=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep TSTOP | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{6}'`
|
---|
147 | if [ "$runstop" == "" ]
|
---|
148 | then
|
---|
149 | if [ "$runstop2" == "" ]
|
---|
150 | then
|
---|
151 | runstop=`stat $currentEntry 2>/dev/null | grep Modify | grep -E -o '20[1-9][0-9][\-][01][0-9][\-][0-3][0-9][ ][0-2][0-9]:[0-6][0-9]:[0-6][0-9][.][0-9]{9}'`
|
---|
152 | else
|
---|
153 | runstop=$runstop2
|
---|
154 | fi
|
---|
155 | fi
|
---|
156 |
|
---|
157 | # set runtype to 'unknown' if no runtype could be queried
|
---|
158 | if [ "$runtype" == "" ]
|
---|
159 | then
|
---|
160 | runtype="n/a"
|
---|
161 | fi
|
---|
162 | # on 15.11.2011 the runtypes had different names
|
---|
163 | if [ "$date" == "2011/11/15" ]
|
---|
164 | then
|
---|
165 | if [ "$runtype" == "drs-calib" ]
|
---|
166 | then
|
---|
167 | runtype="drs-gain"
|
---|
168 | fi
|
---|
169 | if [ "$runtype" == "drs-time-calib" ]
|
---|
170 | then
|
---|
171 | runtype="drs-time"
|
---|
172 | fi
|
---|
173 | if [ "$runtype" == "pedestal" ]
|
---|
174 | then
|
---|
175 | runtype="drs-pedestal"
|
---|
176 | fi
|
---|
177 | if [ "$runtype" == "light-pulser" ]
|
---|
178 | then
|
---|
179 | runtype="light-pulser-ext"
|
---|
180 | fi
|
---|
181 | if [ "$runtype" == "pedestal-on" ]
|
---|
182 | then
|
---|
183 | runtype="pedestal"
|
---|
184 | fi
|
---|
185 | fi
|
---|
186 | #now take care of the slow control data.
|
---|
187 | #first get the start and stop time of the raw file
|
---|
188 |
|
---|
189 | mjdref=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
190 | tstarti=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
191 | tstartf=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
192 | tstopi=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'TSTOPI' | grep -E -o '[0-9]{5}'`
|
---|
193 | tstopf=`/opt/FACT++/fitsdump -h -t Events $currentEntry 2>/dev/null | grep 'TSTOPF' | grep -E -o '0[.][0-9]+'`
|
---|
194 | doNotDoThisEntry="false"
|
---|
195 | if [ "$tstarti" == "0" ] || [ "$tstopi" == "0" ] || [ "$mjdref" == "0" ]
|
---|
196 | then
|
---|
197 | echo "ERROR: "$currentEntry" has tstart, tstop or mjdref = 0"
|
---|
198 | fi
|
---|
199 |
|
---|
200 | if [ "$tstartf" == "" ]
|
---|
201 | then
|
---|
202 | doNotDoThisEntry="true"
|
---|
203 | echo $currentEntry >> problemWithTSTART.txt
|
---|
204 | echo "WARNING: "$currentEntry" Has problems with Dates"
|
---|
205 | fi
|
---|
206 | if [ "$tstarti" == "" ]
|
---|
207 | then
|
---|
208 | tstarti="0"
|
---|
209 | fi
|
---|
210 | if [ "$tstopi" == "" ]
|
---|
211 | then
|
---|
212 | tstopi="0"
|
---|
213 | fi
|
---|
214 | if [ "$mjdref" == "" ]
|
---|
215 | then
|
---|
216 | mjdref="0"
|
---|
217 | fi
|
---|
218 | if [ "$tstartf" == "" ]
|
---|
219 | then
|
---|
220 | tstartf="0"
|
---|
221 | fi
|
---|
222 | if [ "$tstopf" == "" ]
|
---|
223 | then
|
---|
224 | tstopf="0"
|
---|
225 | fi
|
---|
226 |
|
---|
227 | tstart=`echo " $tstarti + $mjdref + $tstartf " | bc -l`
|
---|
228 | tstop=`echo " $tstopi + $mjdref + $tstopf " | bc -l`
|
---|
229 | exposure=`echo "$tstop - $tstart " | bc -l`
|
---|
230 | exposure=`echo "$exposure * 86400" | bc -l `
|
---|
231 |
|
---|
232 | #now get relevant data from daily files
|
---|
233 | #first get mjdref for the aux file and adapt start time accordingly
|
---|
234 | auxmjdref=`/opt/FACT++/fitsdump -h -t $trackingTable $trackingFile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
235 | if [ "$auxmjdref" == "" ]
|
---|
236 | then
|
---|
237 | echo "ERROR: "$trackingFile" has no mjdref available. Aborting script"
|
---|
238 | exit
|
---|
239 | fi
|
---|
240 |
|
---|
241 | tstartaux=`echo " $tstart - $auxmjdref " | bc -l`
|
---|
242 | tstopaux=`echo " $tstop - $auxmjdref " | bc -l`
|
---|
243 | ftcopy $trackingFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col Ra;Dec;Zd;Az;Time]' history=NO !$tempFits
|
---|
244 | /opt/FACT++/fitsdump $tempFits -c Ra --stat -o $tempFile 2>/dev/null
|
---|
245 | ramin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
246 | ramax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
247 | ramean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
248 | if [ "$ramin" != "" ]
|
---|
249 | then
|
---|
250 | ramin=`echo "$ramin * 15" | bc -l`
|
---|
251 | ramax=`echo "$ramax * 15" | bc -l`
|
---|
252 | ramean=`echo "$ramean * 15" | bc -l`
|
---|
253 | fi
|
---|
254 | /opt/FACT++/fitsdump $tempFits -c Dec --stat -o $tempFile 2>/dev/null
|
---|
255 | decmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
256 | decmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
257 | decmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
258 | /opt/FACT++/fitsdump $tempFits -c Zd --stat -o $tempFile 2>/dev/null
|
---|
259 | zdmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
260 | zdmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
261 | zdmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
262 | /opt/FACT++/fitsdump $tempFits -c Az --stat -o $tempFile 2>/dev/null
|
---|
263 | azmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
264 | azmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
265 | azmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
266 |
|
---|
267 | auxmjdref=`/opt/FACT++/fitsdump -h -t $triggerTable $triggerFile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
268 | if [ "$auxmjdref" == "" ]
|
---|
269 | then
|
---|
270 | echo "ERROR: "$triggerFile" has no mjdref available. Aborting script"
|
---|
271 | exit
|
---|
272 | fi
|
---|
273 | tstartaux=`echo " $tstart - $auxmjdref " | bc -l`
|
---|
274 | tstopaux=`echo " $tstop - $auxmjdref " | bc -l`
|
---|
275 | ftcopy $triggerFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col TriggerRate;Time]' history=NO !$tempFits
|
---|
276 | /opt/FACT++/fitsdump $tempFits -c TriggerRate --stat -o $tempFile 2>/dev/null
|
---|
277 | ratemin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
278 | ratemax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
279 | ratemean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
280 | ratemedian=`grep 'Med' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
281 |
|
---|
282 | auxmjdref=`/opt/FACT++/fitsdump -h -t $staticTable $staticFile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
283 | if [ "$auxmjdref" == "" ]
|
---|
284 | then
|
---|
285 | echo "ERROR: "$staticFile" has no mjdref available. Aborting script"
|
---|
286 | exit
|
---|
287 | fi
|
---|
288 | iter=0
|
---|
289 | timeShift=0
|
---|
290 | threshmin=""
|
---|
291 | while [ "$threshmin" == "" ] && [ "$iter" != "10" ]
|
---|
292 | do
|
---|
293 | tstartaux=`echo " $tstart - $auxmjdref - $timeShift " | bc -l`
|
---|
294 | tstopaux=`echo " $tstop - $auxmjdref " | bc -l`
|
---|
295 | ftcopy $staticFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col PatchThresh;Time]' history=NO !$tempFits
|
---|
296 | /opt/FACT++/fitsdump $tempFits -c PatchThresh --stat -o $tempFile 2>/dev/null
|
---|
297 | threshmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
298 | threshmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
299 | threshmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
300 | threshmedian=`grep 'Med' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
301 |
|
---|
302 | timeShift=`echo " $timeShift + 0.00011574 " | bc -l`
|
---|
303 | iter=`echo " $iter + 1 " | bc -l`
|
---|
304 | done
|
---|
305 |
|
---|
306 | #########################################################################################################################################################
|
---|
307 | auxmjdref=`/opt/FACT++/fitsdump -h -t $voltagesTable $voltagesFile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
308 | if [ "$auxmjdref" == "" ]
|
---|
309 | then
|
---|
310 | echo "ERROR: "$voltagesFile" has no mjdref available. Aborting script"
|
---|
311 | exit
|
---|
312 | fi
|
---|
313 | iter=0
|
---|
314 | timeShift=0
|
---|
315 | biasvoltmin=""
|
---|
316 | while [ "$biasvoltmin" == "" ] && [ "$iter" != "10" ]
|
---|
317 | do
|
---|
318 | tstartaux=`echo " $tstart - $auxmjdref " | bc -l`
|
---|
319 | tstopaux=`echo " $tstop - $auxmjdref " | bc -l`
|
---|
320 | ftcopy $voltagesFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col U;Time]' !$tempFits
|
---|
321 | /opt/FACT++/fitsdump $tempFits -c U[0:319] --stat -o $tempFile 2>/dev/null
|
---|
322 | biasvoltmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
323 | biasvoltmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
324 | biasvoltmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
325 | biasvoltmedian=`grep 'Med' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
326 | timeShift=`echo " $timeShift + 0.00011574 " | bc -l`
|
---|
327 | iter=`echo " $iter + 1 " | bc -l`
|
---|
328 |
|
---|
329 | done
|
---|
330 |
|
---|
331 | auxmjdref=`/opt/FACT++/fitsdump -h -t $currentsTable $currentFile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
|
---|
332 | if [ "$auxmjdref" == "" ]
|
---|
333 | then
|
---|
334 | echo "ERROR: "$currentFile" has no mjdref available. Aborting script"
|
---|
335 | exit
|
---|
336 | fi
|
---|
337 | iter=0
|
---|
338 | timeShift=0
|
---|
339 | biascurrentmin=""
|
---|
340 | while [ "$biascurrentmin" == "" ] && [ "$iter" != "10" ]
|
---|
341 | do
|
---|
342 | tstartaux=`echo " $tstart - $auxmjdref " | bc -l`
|
---|
343 | tstopaux=`echo " $tstop - $auxmjdref " | bc -l`
|
---|
344 | ftcopy $currentFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col I;Time]' !$tempFits
|
---|
345 | /opt/FACT++/fitsdump $tempFits -c I[0:319] --stat -o $tempFile 2>/dev/null
|
---|
346 | biascurrentmin=`grep 'Min' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
347 | biascurrentmax=`grep 'Max' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
348 | biascurrentmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
349 | biascurrentmedian=`grep 'Med' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
350 | timeShift=`echo " $timeShift + 0.00011574 " | bc -l`
|
---|
351 | iter=`echo " $iter + 1 " | bc -l`
|
---|
352 |
|
---|
353 | #echo "biascurrent min, max. mean, median: "$biascurrentmin" "$biascurrentmax" "$biascurrentmean" "$biascurrentmedian
|
---|
354 | done
|
---|
355 |
|
---|
356 | #write the retrieved data to the input file for creating fits afterwards
|
---|
357 | echo "RUNTYPE "$runtype" / run type" >> $keywordsFile
|
---|
358 | echo "ROI "$roi" / region of interest" >> $keywordsFile
|
---|
359 | echo "ROITM "$roiTM" / Roi for time markers" >> $keywordsFile
|
---|
360 | echo "NUMEVENT "$numevents" / number of events" >> $keywordsFile
|
---|
361 | echo "NUMPHYS "$numphys" / num of physical triggers" >> $keywordsFile
|
---|
362 | echo "NUMEXT1 "$numext1" / num of Light pulser 1 triggers" >> $keywordsFile
|
---|
363 | echo "NUMEXT2 "$numext2" / num of Light pulser 2 triggers" >> $keywordsFile
|
---|
364 | echo "NUMELP "$numelp" / num of external Light pulser triggers" >> $keywordsFile
|
---|
365 | echo "NUMILP "$numilp" / num of internal Light pulser triggers" >> $keywordsFile
|
---|
366 | echo "NUMOTH "$numoth" / num of other triggers" >> $keywordsFile
|
---|
367 | echo "NUMPED "$numped" / num of pedestal triggers" >> $keywordsFile
|
---|
368 | echo "NUMTIME "$numtime" / num of time calibration triggers" >> $keywordsFile
|
---|
369 | echo "DATEOBS "$runstart" / start of observation" >> $keywordsFile
|
---|
370 | echo "MJDREF "$mjdref" / reference of MjD values" >> $keywordsFile
|
---|
371 | echo "EXPOSURE "$exposure" /duration of run" >> $keywordsFile
|
---|
372 | echo "TSTARTI "$tstarti" / first event arrival time (int)" >> $keywordsFile
|
---|
373 | echo "TSTARTF "$tstartf" / first event arrival time (frac)" >> $keywordsFile
|
---|
374 | echo "TSTOPI "$tstopi" / last event arrival time (int)" >> $keywordsFile
|
---|
375 | echo "TSTOPF "$tstopf" / last event arrival time (frac)" >> $keywordsFile
|
---|
376 | echo "RAMIN "$ramin" / min value of right ascension" >> $keywordsFile
|
---|
377 | echo "RAMAX "$ramax" / max value of right ascension" >> $keywordsFile
|
---|
378 | echo "RAMEAN "$ramean" / mean value of right ascension" >> $keywordsFile
|
---|
379 | echo "DECMIN "$decmin" / min value of declination" >> $keywordsFile
|
---|
380 | echo "DECMAX "$decmax" / max value of declination" >> $keywordsFile
|
---|
381 | echo "DECMEAN "$decmean" / mean value of declination" >> $keywordsFile
|
---|
382 | echo "ZDMIN "$zdmin" / min value of zenith distance" >> $keywordsFile
|
---|
383 | echo "ZDMAX "$zdmax" / max value of zenith distance" >> $keywordsFile
|
---|
384 | echo "ZDMEAN "$zdmean" / mean value of zenith distance" >> $keywordsFile
|
---|
385 | echo "AZMIN "$azmin" / min value of azimuth" >> $keywordsFile
|
---|
386 | echo "AZMAX "$azmax" / max value of azimuth" >> $keywordsFile
|
---|
387 | echo "AZMEAN "$azmean" / mean value of azimuth" >> $keywordsFile
|
---|
388 | echo "RATEMIN "$ratemin" / min value of trigger rates" >> $keywordsFile
|
---|
389 | echo "RATEMAX "$ratemax" / max value of trigger rates" >> $keywordsFile
|
---|
390 | echo "RATEMEAN "$ratemean" / mean value of trigger rates" >> $keywordsFile
|
---|
391 | echo "RATEMED "$ratemedian" / median value of trigger rates" >> $keywordsFile
|
---|
392 | echo "THRESMIN "$threshmin" / min threshold value" >> $keywordsFile
|
---|
393 | echo "THRESMAX "$threshmax" / max threshold value" >> $keywordsFile
|
---|
394 | echo "THRESMEA "$threshmean" / mean threshold value" >> $keywordsFile
|
---|
395 | echo "THRESMED "$threshmedian" / max threshold value" >> $keywordsFile
|
---|
396 | echo "BIASVMIN "$biasvoltmin" / min bias voltage (V)" >> $keywordsFile
|
---|
397 | echo "BIASVMAX "$biasvoltmax" / max bias voltage (V)" >> $keywordsFile
|
---|
398 | echo "BIASVMEA "$biasvoltmean" / mean bias voltage (V)" >> $keywordsFile
|
---|
399 | echo "BIASVMED "$biasvoltmedian" / median bias voltage (V)" >> $keywordsFile
|
---|
400 | echo "BIASAMIN "$biascurrentmin" / min bias current (uA)" >> $keywordsFile
|
---|
401 | echo "BIASAMAX "$biascurrentmax" / max bias current (uA)" >> $keywordsFile
|
---|
402 | echo "BIASAMEA "$biascurrentmean" / mean bias current (uA)" >> $keywordsFile
|
---|
403 | echo "BIASAMED "$biascurrentmedian" / median bias current (uA)" >> $keywordsFile
|
---|
404 |
|
---|
405 |
|
---|
406 | echo "EXTNAME GROUPING / grouping table" >> $keywordsFile
|
---|
407 | echo "GRPNAME FACT-RAW / name of group" >> $keywordsFile
|
---|
408 | echo "RUNNUM "$runnumber" / run number" >> $keywordsFile
|
---|
409 | echo "RUNID "$dateRaw"_"$runnumber" / Run Id" >> $keywordsFile
|
---|
410 |
|
---|
411 | }
|
---|
412 |
|
---|
413 | #today=`date +%F`
|
---|
414 | #alias alsoToLog='tee -a $logfile 2>&1'
|
---|
415 |
|
---|
416 | #echo "" | tee -a $logfile 2>&1
|
---|
417 | #echo "" | tee -a $logfile 2>&1
|
---|
418 | #echo "" | tee -a $logfile 2>&1
|
---|
419 |
|
---|
420 | #cleanup logfile
|
---|
421 | rm -f $logfile
|
---|
422 |
|
---|
423 | #echo `date`" executing "$0 | tee -a $logfile 2>&1
|
---|
424 |
|
---|
425 |
|
---|
426 |
|
---|
427 | #first of all, let's make sure that required slow control files are present
|
---|
428 | if ! [ -e $trackingFile ]
|
---|
429 | then
|
---|
430 | echo "ERROR: Required aux file "$trackingFile" not found. Aborting script" | tee -a $logfile 2>&1
|
---|
431 | exit
|
---|
432 | fi
|
---|
433 | if ! [ -e $triggerFile ]
|
---|
434 | then
|
---|
435 | echo "ERROR: Required aux file "$triggerFile" not found. Aborting script" | tee -a $logfile 2>&1
|
---|
436 | exit
|
---|
437 | fi
|
---|
438 | if ! [ -e $staticFile ]
|
---|
439 | then
|
---|
440 | echo "ERROR: Required aux file "$staticFile" not found. Aborting script" | tee -a $logfile 2>&1
|
---|
441 | exit
|
---|
442 | fi
|
---|
443 | if ! [ -e $voltagesFile ]
|
---|
444 | then
|
---|
445 | echo "ERROR: Required aux file "$voltagesFile" not found. Aborting script" | tee -a $logfile 2>&1
|
---|
446 | exit
|
---|
447 | fi
|
---|
448 | if ! [ -e $currentFile ]
|
---|
449 | then
|
---|
450 | echo "ERROR: Required aux file "$currentFile" not found. Aborting script" | tee -a $logfile 2>&1
|
---|
451 | exit
|
---|
452 | fi
|
---|
453 |
|
---|
454 | #next define the format of the grouping file
|
---|
455 |
|
---|
456 | rm -f $colDescFile
|
---|
457 | echo "MEMBER_NAME 60A" >> $colDescFile
|
---|
458 | echo "MEMBER_XTENSION 8A" >> $colDescFile
|
---|
459 | echo "MEMBER_URI_TYPE 3A" >> $colDescFile
|
---|
460 | echo "MEMBER_LOCATION 256A" >> $colDescFile
|
---|
461 | echo "MEMBER_VERSION 1J" >> $colDescFile
|
---|
462 | echo "MEMBER_POSITION 1J" >> $colDescFile
|
---|
463 | echo "DATA_TYPE 60A" >> $colDescFile
|
---|
464 |
|
---|
465 | entries=`find $rawFolder -type f -name '*.fits.gz' | sort`
|
---|
466 | calibs=""
|
---|
467 | calibFiles=""
|
---|
468 | calibDrsFiles=""
|
---|
469 | calibDrsPedestalFiles=""
|
---|
470 | calibsRoi=""
|
---|
471 | calibsRoiTM=""
|
---|
472 |
|
---|
473 | #data=""
|
---|
474 | #correspondingCalib=""
|
---|
475 | numCalibs=0
|
---|
476 | #numData=0
|
---|
477 |
|
---|
478 | if [ "$year" == "" ]
|
---|
479 | then
|
---|
480 | echo "Missing year argument"
|
---|
481 | exit
|
---|
482 | fi
|
---|
483 |
|
---|
484 | if [ "$month" == "" ]
|
---|
485 | then
|
---|
486 | echo "Missing month argument"
|
---|
487 | exit
|
---|
488 | fi
|
---|
489 |
|
---|
490 | if [ "$day" == "" ]
|
---|
491 | then
|
---|
492 | echo "Missing day argument"
|
---|
493 | exit
|
---|
494 | fi
|
---|
495 |
|
---|
496 | numEntries=0
|
---|
497 | for item in ${entries[@]}
|
---|
498 | do
|
---|
499 | numEntries=`expr $numEntries + 1`
|
---|
500 | done
|
---|
501 |
|
---|
502 | echo "There are "$numEntries" entries to examine in folder "$rawFolder | tee -a $logfile 2>&1
|
---|
503 |
|
---|
504 | #echo "Will now erase entries generated previously..."
|
---|
505 | #toDelete=`find $targetFolder -type f -name '*_raw.fits' | sort`
|
---|
506 | #for delete in ${toDelete[@]}
|
---|
507 | #do
|
---|
508 | # echo "removing "$delete
|
---|
509 | # rm $delete
|
---|
510 | #done
|
---|
511 | #toDelete=`find $targetFolder -type f -name '*_raw.txt' | sort`
|
---|
512 | #for delete in ${toDelete[@]}
|
---|
513 | #do
|
---|
514 | # echo "removing $delete"
|
---|
515 | # rm $delete
|
---|
516 | #done
|
---|
517 | #echo "done"
|
---|
518 |
|
---|
519 | for entry in ${entries[@]}
|
---|
520 | do
|
---|
521 | filename=`echo $entry | grep -E -o '20[1-9][0-9][01][0-9][0-3][0-9]_[0-9]{3}'`
|
---|
522 | filedate=`echo $filename | cut -d_ -f1`
|
---|
523 | runnumberInter=`echo $filename | cut -d_ -f2 | sed -e 's/^0//g' -e 's/^0//g'`
|
---|
524 | runnumber=`printf %03d $runnumberInter`
|
---|
525 | #figure out whether this is a drs calib
|
---|
526 | if [ "`echo $entry | grep drs`" != "" ]
|
---|
527 | then
|
---|
528 | #check if this is the pedestal run. for this, grep the associated raw data file and check for previous calibrations (drs pedestal and drs gain)
|
---|
529 | minusOne=`expr $runnumber - 1`
|
---|
530 | minusOne=`printf %03d $minusOne`
|
---|
531 | minusTwo=`expr $runnumber - 2`
|
---|
532 | minusTwo=`printf %03d $minusTwo`
|
---|
533 | pedestalRaw=$rawFolder/$filename.fits.gz
|
---|
534 | DrsGainRaw=$rawFolder/$filedate"_"$minusOne.fits.gz
|
---|
535 | DrsPedestalRaw=$rawFolder/$filedate"_"$minusTwo.fits.gz
|
---|
536 | DrsGain=$rawFolder/$filedate"_"$minusOne.drs.fits.gz
|
---|
537 | DrsPedestal=$rawFolder/$filedate"_"$minusTwo.drs.fits.gz
|
---|
538 | pedestalkey=""
|
---|
539 | drsGainKey=""
|
---|
540 | drsPedestalKey=""
|
---|
541 | if [ -f $pedestalRaw ]
|
---|
542 | then
|
---|
543 | pedestalKey=`/opt/FACT++/fitsdump -h $pedestalRaw 2>/dev/null | grep "'pedestal'"`
|
---|
544 | fi
|
---|
545 | if [ "$pedestalKey" == "" ]
|
---|
546 | then #the current drs file is NOT a pedestal. Continue
|
---|
547 | continue
|
---|
548 | fi
|
---|
549 | # echo "Found Pedestal entry "$entry
|
---|
550 | if [ -f $DrsGainRaw ] && [ -f $DrsGain ]
|
---|
551 | then
|
---|
552 | drsGainKey=`/opt/FACT++/fitsdump -h $DrsGainRaw 2>/dev/null | grep "'drs-gain'"`
|
---|
553 | else
|
---|
554 | DrsGain=""
|
---|
555 | fi
|
---|
556 | if [ -f $DrsPedestalRaw ] && [ -f $DrsPedestal ]
|
---|
557 | then
|
---|
558 | drsPedestalKey=`/opt/FACT++/fitsdump -h $DrsPedestalRaw 2>/dev/null | grep "'drs-pedestal'"`
|
---|
559 | else
|
---|
560 | DrsPedestal=""
|
---|
561 | fi
|
---|
562 |
|
---|
563 | if [ "$drsPedestalKey" != "" ]
|
---|
564 | then
|
---|
565 | calibtstarti=`/opt/FACT++/fitsdump -h $DrsPedestalRaw 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
566 | calibtstartf=`/opt/FACT++/fitsdump -h $DrsPedestalRaw 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
567 | else
|
---|
568 | if [ "$drsGainKey" != "" ]
|
---|
569 | then
|
---|
570 | calibtstarti=`/opt/FACT++/fitsdump -h $DrsGainRaw 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
571 | calibtstartf=`/opt/FACT++/fitsdump -h $DrsGainRaw 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
572 | else
|
---|
573 | calibtstarti=`/opt/FACT++/fitsdump -h $pedestalRaw 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
574 | calibtstartf=`/opt/FACT++/fitsdump -h $pedestalRaw 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
575 | fi
|
---|
576 | fi
|
---|
577 | calibtstopi=`/opt/FACT++/fitsdump -h $pedestalRaw 2>/dev/null | grep 'TSTOPI' | grep -E -o '[0-9]{5}'`
|
---|
578 | calibtstopf=`/opt/FACT++/fitsdump -h $pedestalRaw 2>/dev/null | grep 'TSTOPF' | grep -E -o '0[.][0-9]+'`
|
---|
579 |
|
---|
580 | auxstarti=`/opt/FACT++/fitsdump -h $voltagesFile 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
581 | auxstartf=`/opt/FACT++/fitsdump -h $voltagesFile 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
582 |
|
---|
583 | if [ "$auxstarti" == "" ]
|
---|
584 | then
|
---|
585 | auxstarti="0"
|
---|
586 | fi
|
---|
587 | if [ "$auxstartf" == "" ]
|
---|
588 | then
|
---|
589 | auxstartf="0"
|
---|
590 | fi
|
---|
591 | if [ "$calibtstarti" == "" ]
|
---|
592 | then
|
---|
593 | calibtstarti="0"
|
---|
594 | fi
|
---|
595 | if [ "$calibtstartf" == "" ]
|
---|
596 | then
|
---|
597 | calibtstartf="0"
|
---|
598 | fi
|
---|
599 | if [ "$calibtstopi" == "" ]
|
---|
600 | then
|
---|
601 | calibtstopi="0"
|
---|
602 | fi
|
---|
603 | if [ "$calibtstopf" == "" ]
|
---|
604 | then
|
---|
605 | calibtstopf="0"
|
---|
606 | fi
|
---|
607 |
|
---|
608 | auxstart=`echo " $auxstarti + 40587 + $auxstartf " | bc -l`
|
---|
609 | calibtstart=`echo " $calibtstarti + 40587 + $calibtstartf " | bc -l`
|
---|
610 | calibtstop=`echo " $calibtstopi + 40587 + $calibtstopf " | bc -l`
|
---|
611 | iter=0
|
---|
612 | timeShift=0
|
---|
613 | biasvoltmean=""
|
---|
614 | tstartaux=`echo " $calibtstart - 40587 - $timeShift" | bc -l`
|
---|
615 | compare=`echo " $tstartaux >= $auxstart " | bc -l`
|
---|
616 |
|
---|
617 | while [ "$biasvoltmean" == "" ] && [ "$iter" != "10" ] && [ "$compare" == "1" ]
|
---|
618 | do
|
---|
619 | tstartaux=`echo " $calibtstart - 40587 - $timeShift" | bc -l`
|
---|
620 | compare=`echo " $tstartaux >= $auxstart " | bc -l`
|
---|
621 | tstopaux=`echo " $calibtstop - 40587 " | bc -l`
|
---|
622 | ftcopy $voltagesFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col U;Time]' !$tempFits
|
---|
623 | /opt/FACT++/fitsdump $tempFits -c U[0:319] --stat -o $tempFile 2>/dev/null
|
---|
624 | biasvoltmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
625 | timeShift=`echo " $timeShift + 0.000011574 " | bc -l`
|
---|
626 | iter=`echo " $iter + 1 " | bc -l`
|
---|
627 | done
|
---|
628 | auxstarti=`/opt/FACT++/fitsdump -h $currentFile 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
|
---|
629 | auxstartf=`/opt/FACT++/fitsdump -h $currentFile 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
|
---|
630 | auxstart=`echo " $auxstarti + $auxstartf " | bc -l`
|
---|
631 | iter=0
|
---|
632 | timeShift=0
|
---|
633 | biascurrentmean=""
|
---|
634 | tstartaux=`echo " $calibtstart - 40587 - $timeShift" | bc -l`
|
---|
635 | compare=`echo " $tstartaux >= $auxstart " | bc -l`
|
---|
636 | while [ "$biascurrentmean" == "" ] && [ "$iter" != "10" ] && [ "$compare" == "1" ]
|
---|
637 | do
|
---|
638 | tstartaux=`echo " $calibtstart - 40587 - $timeShift " | bc -l`
|
---|
639 | compare=`echo " $tstartaux >= $auxstart " | bc -l`
|
---|
640 | tstopaux=`echo " $calibtstop - 40587 " | bc -l`
|
---|
641 | ftcopy $currentFile'[Time> '${tstartaux}' && Time< '${tstopaux}'][col I;Time]' !$tempFits
|
---|
642 | /opt/FACT++/fitsdump $tempFits -c I[0:319] --stat -o $tempFile 2>/dev/null
|
---|
643 | biascurrentmean=`grep 'Mea' $tempFile | grep -E -o '[-]*[0-9]*[.]*[0-9]+'`
|
---|
644 | timeShift=`echo " $timeShift + 0.000011574 " | bc -l`
|
---|
645 | iter=`echo " $iter + 1 " | bc -l`
|
---|
646 | done
|
---|
647 |
|
---|
648 | if [ "$biasvoltmean" == "" ]
|
---|
649 | then
|
---|
650 | biasvoltmean=0
|
---|
651 | fi
|
---|
652 | # echo "Bias voltage: "$biasvoltmean
|
---|
653 | if [ "$biascurrentmean" == "" ]
|
---|
654 | then
|
---|
655 | biascurrentmean=0
|
---|
656 | fi
|
---|
657 | compare=`echo " $biascurrentmean < 5 " | bc -l`
|
---|
658 | if [ "$pedestalKey" != "" ] && [ "$drsGainKey" != "" ] && [ "$drsPedestalKey" != "" ] && [ "$biasvoltmean" == "0" ] && [ "$compare" == "1" ]
|
---|
659 | then
|
---|
660 | calibFiles[$numCalibs]=$entry
|
---|
661 | calibs[$numCalibs]=$runnumber
|
---|
662 | calibDrsFiles[$numCalibs]=$DrsGain
|
---|
663 | calibDrsPedestalFiles[$numCalibs]=$DrsPedestal
|
---|
664 | calibsRoi[$numCalibs]=`/opt/FACT++/fitsdump -h -t DrsCalibration $entry 2>/dev/null | grep NROI | grep -v NROITM | grep -E -o '[0-9]{1,4}'`
|
---|
665 | calibsRoiTM[$numCalibs]=`/opt/FACT++/fitsdump -h -t DrsCalibration $entry 2>/dev/null | grep NTM | grep -E -o '[0-9]{1,4}'`
|
---|
666 | #echo "Calib file #"$runnumber" found. Roi=${calibsRoi[$numCalibs]} RoiTM="${calibsRoiTM[$numCalibs]}
|
---|
667 | numCalibs=`expr $numCalibs + 1`
|
---|
668 | fi
|
---|
669 | continue
|
---|
670 | fi
|
---|
671 |
|
---|
672 | #if not calib, then look if this is a calibration run (i.e. run that created the drs calib)
|
---|
673 | correspondingDrs=$rawFolder/$filename.drs.fits.gz
|
---|
674 | if [ -f $correspondingDrs ]
|
---|
675 | then
|
---|
676 | continue
|
---|
677 | fi
|
---|
678 | #if regular run, add its run number, and figure out a proper calibration file
|
---|
679 | data[$numData]=$runnumber
|
---|
680 | calibFound="false"
|
---|
681 | partialCalibFound="false"
|
---|
682 | calibIndex=`expr $numCalibs - 1`
|
---|
683 |
|
---|
684 | #if there is no calib available, report error
|
---|
685 | if [ "$numCalibs" == "0" ]
|
---|
686 | then
|
---|
687 | calibFound="notFound"
|
---|
688 | fi
|
---|
689 | while [ "$calibFound" == "false" ]
|
---|
690 | do
|
---|
691 | roi=`/opt/FACT++/fitsdump -h -t Events $entry 2>/dev/null | grep NROI | grep -v NROITM | grep -E -o '[0-9]{1,4}'`
|
---|
692 | roiTM=`/opt/FACT++/fitsdump -h -t Events $entry 2>/dev/null | grep NROITM | grep -E -o '[0-9]{1,4}'`
|
---|
693 | if [ "$roi" == "${calibsRoi[$calibIndex]}" ] && [ "$roiTM" == "${calibsRoiTM[$calibIndex]}" ]
|
---|
694 | then
|
---|
695 | if [ "${calibDrsFiles[$calibIndex]}" != "" ] && [ "${calibDrsPedestalFiles[$calibIndex]}" != "" ]
|
---|
696 | then
|
---|
697 | calibFound="true"
|
---|
698 | break
|
---|
699 | else
|
---|
700 | if [ "$partialCalibFound" == "false" ]
|
---|
701 | then
|
---|
702 | partialCalibFound=$calibIndex
|
---|
703 | fi
|
---|
704 | fi
|
---|
705 | fi
|
---|
706 | calibIndex=`expr $calibIndex - 1`
|
---|
707 | if [ "$calibIndex" == "-1" ]
|
---|
708 | then
|
---|
709 | calibFound="notFound"
|
---|
710 | fi
|
---|
711 | done
|
---|
712 |
|
---|
713 | if [ "$partialCalibFound" != "false" ] && [ "$calibFound" != "true" ]
|
---|
714 | then
|
---|
715 | calibFound=""
|
---|
716 | calibIndex=$partialCalibFound
|
---|
717 | fi
|
---|
718 |
|
---|
719 | if [ "$calibFound" == "true" ]
|
---|
720 | then
|
---|
721 | calibFound="complete"
|
---|
722 | fi
|
---|
723 |
|
---|
724 | if [ "$calibFound" == "notFound" ]
|
---|
725 | then
|
---|
726 | echo "No suitable calibration file could be found for run $runnumber" | tee -a $logfile 2>&1
|
---|
727 | calibFileString="NULL"
|
---|
728 | calibDrsString="NULL"
|
---|
729 | calibDrsPedestalString="NULL"
|
---|
730 | else
|
---|
731 | echo "Found $calibFound calibration "${calibs[$calibIndex]}" for run "$runnumber" with Roi="$roi" and roiTM="$roiTM | tee -a $logfile 2>&1
|
---|
732 | calibFileString=${calibFiles[$calibIndex]}
|
---|
733 | calibDrsString=${calibDrsFiles[$calibIndex]}
|
---|
734 | calibDrsPedestalString=${calibDrsPedestalFiles[$calibIndex]}
|
---|
735 | if [ "$calibDrsString" == "" ]
|
---|
736 | then
|
---|
737 | calibDrsString="NULL"
|
---|
738 | fi
|
---|
739 | if [ "$calibDrsPedestalString" == "" ]
|
---|
740 | then
|
---|
741 | calibDrsPedestalString="NULL"
|
---|
742 | fi
|
---|
743 | fi
|
---|
744 |
|
---|
745 | #File is valid. get its related informations
|
---|
746 | currentEntry=$entry
|
---|
747 | rm -f $keywordsFile
|
---|
748 | rm -f $dataFile
|
---|
749 | writeHeaderKeysToInputFile
|
---|
750 | if [ "$doNotDoThisEntry" == "true" ]
|
---|
751 | then
|
---|
752 | continue
|
---|
753 | fi
|
---|
754 | #Header keys written for raw data. do the same for related aux data
|
---|
755 | echo "Events BINTABLE URL ../../../"$entry" 1 1 Events" >> $dataFile
|
---|
756 | if [ "$calibFileString" != "NULL" ]
|
---|
757 | then
|
---|
758 | echo "DrsCalibration BINTABLE URL ../../../"$calibFileString" 1 1 Pedestal" >> $dataFile
|
---|
759 | fi
|
---|
760 | if [ "$calibDrsString" != "NULL" ]
|
---|
761 | then
|
---|
762 | echo "DrsCalibration BINTABLE URL ../../../"$calibDrsString" 1 1 Drs_Gain" >> $dataFile
|
---|
763 | fi
|
---|
764 | if [ "$calibDrsPedestalString" != "NULL" ]
|
---|
765 | then
|
---|
766 | echo "DrsCalibration BINTABLE URL ../../../"$calibDrsPedestalString" 1 1 Drs_Pedestal" >> $dataFile
|
---|
767 | fi
|
---|
768 | echo "DRIVE_CONTROL_TRACKING_POSITION BINTABLE URL ../../../"$trackingFile" 1 1 Tracking_Position" >> $dataFile
|
---|
769 | echo "FTM_CONTROL_TRIGGER_RATE BINTABLE URL ../../../"$triggerFile" 1 1 Trigger_Rate" >> $dataFile
|
---|
770 | echo "FTM_CONTROL_STATIC_DATA BINTABLE URL ../../../"$staticFile" 1 1 Thresholds" >> $dataFile
|
---|
771 | echo "BIAS_CONTROL_VOLTAGE BINTABLE URL ../../../"$voltagesFile" 1 1 Voltages" >> $dataFile
|
---|
772 | echo "BIAS_CONTROL_CURRENT BINTABLE URL ../../../"$currentFile" 1 1 Currents" >> $dataFile
|
---|
773 |
|
---|
774 | if [ "$calibFound" != "notFound" ]
|
---|
775 | then
|
---|
776 | #write info to Werner's file
|
---|
777 | if [ "$runtype" == "custom" ]
|
---|
778 | then
|
---|
779 | runtype="custom____________"
|
---|
780 | fi
|
---|
781 | if [ "$runtype" == "data" ]
|
---|
782 | then
|
---|
783 | runtype="data______________"
|
---|
784 | fi
|
---|
785 | if [ "$runtype" == "drs-gain" ]
|
---|
786 | then
|
---|
787 | runtype="drs-gain__________"
|
---|
788 | fi
|
---|
789 | if [ "$runtype" == "drs-gain-ext" ]
|
---|
790 | then
|
---|
791 | runtype="drs-gain-ext______"
|
---|
792 | fi
|
---|
793 | if [ "$runtype" == "drs-pedestal" ]
|
---|
794 | then
|
---|
795 | runtype="drs-pedestal______"
|
---|
796 | fi
|
---|
797 | if [ "$runtype" == "drs-pedestal-ext" ]
|
---|
798 | then
|
---|
799 | runtype="drs-pedestal-ext__"
|
---|
800 | fi
|
---|
801 | if [ "$runtype" == "drs-time" ]
|
---|
802 | then
|
---|
803 | runtype="drs-time__________"
|
---|
804 | fi
|
---|
805 | if [ "$runtype" == "drs-time-delay15" ]
|
---|
806 | then
|
---|
807 | runtype="drs-time-delay15__"
|
---|
808 | fi
|
---|
809 | if [ "$runtype" == "drs-time-delay05" ]
|
---|
810 | then
|
---|
811 | runtype="drs-time-delay05__"
|
---|
812 | fi
|
---|
813 | if [ "$runtype" == "drs-time-delay20" ]
|
---|
814 | then
|
---|
815 | runtype="drs-time-delay20__"
|
---|
816 | fi
|
---|
817 | if [ "$runtype" == "drs-time-upshifted" ]
|
---|
818 | then
|
---|
819 | runtype="drs-time-upshifted"
|
---|
820 | fi
|
---|
821 | if [ "$runtype" == "light-pulser-ext" ]
|
---|
822 | then
|
---|
823 | runtype="light-pulser-ext__"
|
---|
824 | fi
|
---|
825 | if [ "$runtype" == "n/a" ]
|
---|
826 | then
|
---|
827 | runtype="n/a_______________"
|
---|
828 | fi
|
---|
829 | if [ "$runtype" == "ped-and-lp-ext" ]
|
---|
830 | then
|
---|
831 | runtype="ped-and-lp-ex_____"
|
---|
832 | fi
|
---|
833 | if [ "$runtype" == "pedestal" ]
|
---|
834 | then
|
---|
835 | runtype="pedestal__________"
|
---|
836 | fi
|
---|
837 | targetWerner=$targetFolder"/"$year"/"$month
|
---|
838 | if [ ! -d $targetWerner ]
|
---|
839 | then
|
---|
840 | mkdir -p $targetWerner
|
---|
841 | fi
|
---|
842 | wernerFile=$targetWerner"/"$year$month"_001.txt"
|
---|
843 | if [ ! -f $wernerFile ]
|
---|
844 | then
|
---|
845 | echo "creating "$wernerFile
|
---|
846 | echo "# DRS DAT DD MM YYYY TYPE " >> $wernerFile
|
---|
847 | fi
|
---|
848 | echo " "${calibs[$calibIndex]}" "$runnumber" "$day" "$month" "$year" "$runtype >> $wernerFile
|
---|
849 | fi
|
---|
850 |
|
---|
851 | #now add the "other" slow control files, i.e. the ones that are not mandatory for analysis
|
---|
852 | auxTable="BIAS_CONTROL_NOMINAL"
|
---|
853 | auxDesc="Bias_Control"
|
---|
854 | writeExtraAuxFile
|
---|
855 | auxTable="BIAS_CONTROL_STATE"
|
---|
856 | auxDesc="Bias_State"
|
---|
857 | writeExtraAuxFile
|
---|
858 | auxTable="DATA_LOGGER_FILENAME_NIGHTLY"
|
---|
859 | auxDesc="Logger_Filename_Night"
|
---|
860 | writeExtraAuxFile
|
---|
861 | auxTable="DATA_LOGGER_FILENAME_RUN"
|
---|
862 | auxDesc="Logger_Filename_Run"
|
---|
863 | writeExtraAuxFile
|
---|
864 | auxTable="DATA_LOGGER_NUM_SUBS"
|
---|
865 | auxDesc="Logger_num_subs"
|
---|
866 | writeExtraAuxFile
|
---|
867 | auxTable="DATA_LOGGER_STATE"
|
---|
868 | auxDesc="Logger_State"
|
---|
869 | writeExtraAuxFile
|
---|
870 | auxTable="DATA_LOGGER_STATS"
|
---|
871 | auxDesc="Logger_Statistics"
|
---|
872 | writeExtraAuxFile
|
---|
873 | auxTable="DRIVE_CONTROL_POINTING_POSITION"
|
---|
874 | auxDesc="Pointing_Position"
|
---|
875 | writeExtraAuxFile
|
---|
876 | auxTable="DRIVE_CONTROL_STATE"
|
---|
877 | auxDesc="Drive_State"
|
---|
878 | writeExtraAuxFile
|
---|
879 | auxTable="DRIVE_CONTROL_STATUS"
|
---|
880 | auxDesc="Drive_Status"
|
---|
881 | writeExtraAuxFile
|
---|
882 | auxTable="FAD_CONTROL_DAC"
|
---|
883 | auxDesc="FAD_DAC"
|
---|
884 | writeExtraAuxFile
|
---|
885 | auxTable="FAD_CONTROL_DNA"
|
---|
886 | auxDesc="FAD_DNA"
|
---|
887 | writeExtraAuxFile
|
---|
888 | auxTable="FAD_CONTROL_DRS_CALIBRATION"
|
---|
889 | auxDesc="FAD_Drs_Calibration"
|
---|
890 | writeExtraAuxFile
|
---|
891 | auxTable="FAD_CONTROL_EVENTS"
|
---|
892 | auxDesc="FAD_Events"
|
---|
893 | writeExtraAuxFile
|
---|
894 | auxTable="FAD_CONTROL_FEEDBACK_DATA"
|
---|
895 | auxDesc="FAD_Feedback_Data"
|
---|
896 | writeExtraAuxFile
|
---|
897 | auxTable="FAD_CONTROL_FILE_FORMAT"
|
---|
898 | auxDesc="FAD_File_Format"
|
---|
899 | writeExtraAuxFile
|
---|
900 | auxTable="FAD_CONTROL_FIRMWARE_VERSION"
|
---|
901 | auxDesc="FAD_Firmware_Version"
|
---|
902 | writeExtraAuxFile
|
---|
903 | auxTable="FAD_CONTROL_PRESCALER"
|
---|
904 | auxDesc="FAD_Prescaler"
|
---|
905 | writeExtraAuxFile
|
---|
906 | auxTable="FAD_CONTROL_REFERENCE_CLOCK"
|
---|
907 | auxDesc="FAD_Reference_Clock"
|
---|
908 | writeExtraAuxFile
|
---|
909 | auxTable="FAD_CONTROL_REGION_OF_INTEREST"
|
---|
910 | auxDesc="FAD_ROI"
|
---|
911 | writeExtraAuxFile
|
---|
912 | auxTable="FAD_CONTROL_RUN_NUMBER"
|
---|
913 | auxDesc="FAD_Run_Number"
|
---|
914 | writeExtraAuxFile
|
---|
915 | auxTable="FAD_CONTROL_RUNS"
|
---|
916 | auxDesc="FAD_Runs"
|
---|
917 | writeExtraAuxFile
|
---|
918 | auxTable="FAD_CONTROL_START_RUN"
|
---|
919 | auxDesc="FAD_Start_Run"
|
---|
920 | writeExtraAuxFile
|
---|
921 | auxTable="FAD_CONTROL_STATE"
|
---|
922 | auxDesc="FAD_State"
|
---|
923 | writeExtraAuxFile
|
---|
924 | auxTable="FAD_CONTROL_STATISTICS1"
|
---|
925 | auxDesc="FAD_Statistics_1"
|
---|
926 | writeExtraAuxFile
|
---|
927 | auxTable="FAD_CONTROL_STATISTICS2"
|
---|
928 | auxDesc="FAD_Statistics_2"
|
---|
929 | writeExtraAuxFile
|
---|
930 | auxTable="FAD_CONTROL_STATS"
|
---|
931 | auxDesc="FAD_Stats"
|
---|
932 | writeExtraAuxFile
|
---|
933 | auxTable="FAD_CONTROL_STATUS"
|
---|
934 | auxDesc="FAD_Status"
|
---|
935 | writeExtraAuxFile
|
---|
936 | auxTable="FAD_CONTROL_TEMPERATURE"
|
---|
937 | auxDesc="FAD_Temperatures"
|
---|
938 | writeExtraAuxFile
|
---|
939 | auxTable="FEEDBACK_DEVIATION"
|
---|
940 | auxDesc="Feedback_Deviation"
|
---|
941 | writeExtraAuxFile
|
---|
942 | auxTable="FEEDBACK_STATE"
|
---|
943 | auxDesc="Feedback_State"
|
---|
944 | writeExtraAuxFile
|
---|
945 | auxTable="FSC_CONTROL_HUMIDITY"
|
---|
946 | auxDesc="FSC_Humidity"
|
---|
947 | writeExtraAuxFile
|
---|
948 | auxTable="FSC_CONTROL_STATE"
|
---|
949 | auxDesc="FSC_State"
|
---|
950 | writeExtraAuxFile
|
---|
951 | auxTable="FSC_CONTROL_TEMPERATURE"
|
---|
952 | auxDesc="FSC_Temperature"
|
---|
953 | writeExtraAuxFile
|
---|
954 | auxTable="FTM_CONTROL_COUNTER"
|
---|
955 | auxDesc="FTM_Counter"
|
---|
956 | writeExtraAuxFile
|
---|
957 | auxTable="FTM_CONTROL_DYNAMIC_DATA"
|
---|
958 | auxDesc="FTM_Dynamic_Data"
|
---|
959 | writeExtraAuxFile
|
---|
960 | auxTable="FTM_CONTROL_FTU_LIST"
|
---|
961 | auxDesc="FTM_FTU_List"
|
---|
962 | writeExtraAuxFile
|
---|
963 | auxTable="FTM_CONTROL_PASSPORT"
|
---|
964 | auxDesc="FTM_Passeport"
|
---|
965 | writeExtraAuxFile
|
---|
966 | auxTable="FTM_CONTROL_STATE"
|
---|
967 | auxDesc="FTM_State"
|
---|
968 | writeExtraAuxFile
|
---|
969 | auxTable="MAGIC_WEATHER_DATA"
|
---|
970 | auxDesc="MAGIC_Weather_Data"
|
---|
971 | writeExtraAuxFile
|
---|
972 | auxTable="MAGIC_WEATHER_STATE"
|
---|
973 | auxDesc="MAGIC_Weather_State"
|
---|
974 | writeExtraAuxFile
|
---|
975 | auxTable="MCP_STATE"
|
---|
976 | auxDesc="MCP_State"
|
---|
977 | writeExtraAuxFile
|
---|
978 | auxTable="RATE_CONTROL_STATE"
|
---|
979 | auxDesc="Rate_Control_State"
|
---|
980 | writeExtraAuxFile
|
---|
981 | #create the fits file
|
---|
982 | targetNormal=$targetFolder"/"$year"/"$month"/"$day
|
---|
983 | if [ ! -d $targetNormal ]
|
---|
984 | then
|
---|
985 | mkdir -p $targetNormal
|
---|
986 | fi
|
---|
987 | targetFile=$targetNormal"/"$year$month$day"_"$runnumber"_001.fits"
|
---|
988 | if [ -f $targetFile ]
|
---|
989 | then
|
---|
990 | rm $targetFile
|
---|
991 | fi
|
---|
992 | fcreate $colDescFile $dataFile $targetFile "headfile="$keywordsFile
|
---|
993 | echo "Created "$targetFile | tee -a $logfile 2>&1
|
---|
994 |
|
---|
995 | done
|
---|