source: trunk/DataCheck/Processing/FillAuxCtrDev.sh@ 17089

Last change on this file since 17089 was 17089, checked in by Daniela Dorner, 11 years ago
new macro paths, usage of getdates function, prepared script to be used in RunMoreNights.sh
  • Property svn:executable set to *
File size: 5.5 KB
Line 
1#!/bin/bash
2
3# option whether to fill all row or only those where information is missing
4# $doupdate might be given as environment variable
5if [ "$doupdate" = "" ]
6then
7 doupdate="yes" # update all entries (needed when new fields have been added)
8 doupdate="no" # fill only entries which are not yet existing (default)
9fi
10
11source `dirname $0`/../Sourcefile.sh
12printprocesslog "INFO starting $0 with option doupdate="$doupdate
13
14logfile=$runlogpath"/FillCtrlDev-"$datetime".log"
15date >> $logfile
16
17# setup to use ftools
18source $HEADAS/headas-init.sh
19
20# check if software is available
21if ! ls $factpath/fitsdump >/dev/null 2>&1
22then
23 printprocesslog "ERROR "$factpath"/fitsdump is not available."
24 finish
25fi
26
27# get dates
28if [ "$certaindate" != "" ]
29then
30 getdates $certaindate
31else
32 # get all night
33 #getdates "all"
34 # get last 6 nights
35 getdates 6
36fi
37
38printprocesslog "INFO processing the following night(s): "${dates[@]}
39echo `date`": processing the following night(s): "${dates[@]} >> $logfile 2>&1
40
41echo ${dates[@]}
42
43cd $mars
44
45# do filling of aux data
46for date in ${dates[@]}
47do
48 auxdir=$auxdata/$date
49 runnumber=`echo $date | sed -e 's/\///g'`
50 if [ $runnumber -lt 20111115 ]
51 then
52 continue
53 fi
54
55 # check if aux files are available from that night
56 if ! [ -d $auxdir ]
57 then
58 printprocesslog "INFO no data available in "$auxdir
59 continue
60 else
61 printprocesslog "INFO processing files in "$auxdir
62 fi
63
64 # get file numbers from DB
65 # but only for not-corrupted files
66 query="SELECT fRunID from RunInfo WHERE fNight="$runnumber" AND fFitsFileErrors=0 "
67 if [ "$doupdate" = "no" ]
68 then
69 query=$query" AND ISNULL(fCtrlDevMean) "
70 fi
71
72 printprocesslog "DEBUG get filenumbers from DB: QUERY: "$query
73 filenumbers=( `sendquery $query` )
74 if [ ${#filenumbers} -eq 0 ]
75 then
76 printprocesslog "INFO No files found in the DB for night "$date
77 continue
78 fi
79
80 # get daily fits files
81 trackingfile=$auxdir/$runnumber.DRIVE_CONTROL_TRACKING_POSITION.fits
82 if ! [ -e $trackingfile ]
83 then
84 printprocesslog "WARN "$trackingfile" not found."
85 echo "WARN "$trackingfile" not found."
86 continue
87 else
88 tracknumerrors=`fverify $trackingfile 2>/dev/null | grep -o '[0-9][ ]error(s)' | grep -E -o '[0-9]'`
89 if [ $tracknumerrors -gt 0 ]
90 then
91 printprocesslog "WARN for $trackingfile fverify returned "$tracknumerrors" error(s)."
92 fi
93 fi
94
95 # fill auxiliary information for files
96 for filenum in ${filenumbers[@]}
97 do
98 printprocesslog "INFO processing file number "$runnumber"_"`printf %03d $filenum`
99 echo `date`": processing file number "$runnumber"_"`printf %03d $filenum` >> $logfile 2>&1
100 # get information from rawfile
101 rawfile=$ziprawdata/$date/$runnumber"_"`printf %03d $filenum`.fits.gz
102 if ! [ -e $rawfile ]
103 then
104 printprocesslog "ERROR: "$rawfile" not found."
105 continue
106 fi
107 runtype=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep RUNTYPE | grep -E -o "['][a-z-]+[']" | sed -e "s/'//g"`
108 mjdrefraw=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep 'MJDREF' | grep -E -o '[0-9]{5}'`
109 tstarti=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep 'TSTARTI' | grep -E -o '[0-9]{5}'`
110 tstartf=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep 'TSTARTF' | grep -E -o '0[.][0-9]+'`
111 tstopi=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep 'TSTOPI' | grep -E -o '[0-9]{5}'`
112 tstopf=`$factpath/fitsdump -h $rawfile 2>/dev/null | grep 'TSTOPF' | grep -E -o '0[.][0-9]+'`
113 if [ "$tstarti" == "" ] || [ "$tstopi" == "" ] || [ "$tstartf" == "" ] || [ "$tstopf" == "" ]
114 then
115 printprocesslog "WARN: "$rawfile": one of the following keywords is empty or 0: TSTARTI TSTARTF TSTOPI TSTOPF "
116 continue
117 fi
118 # assuming that at least TSTARTI and TSTOPI are consistent
119 #echo $rawfile
120 #echo $tstarti
121 #echo $tstopi
122 #echo $tstartf
123 #echo $tstopf
124 if [ $tstarti -gt 30000 ]
125 then
126 tstart=`echo " $tstarti + $tstartf - 40587 " | bc -l`
127 tstart2=`echo " $tstarti + $tstartf - 40587 - 0.00011574 " | bc -l` # 10 sec
128 #tstart2=`echo " $tstarti + $tstartf - 40587 - 0.000023148 " | bc -l` # 2 sec
129 tstop=`echo " $tstopi + $tstopf - 40587 " | bc -l`
130 else
131 tstart=`echo " $tstarti + $tstartf " | bc -l`
132 tstart2=`echo " $tstarti + $tstartf - 0.00011574 " | bc -l` # 10 sec
133 #tstart2=`echo " $tstarti + $tstartf - 0.000023148 " | bc -l` # 2 sec
134 tstop=`echo " $tstopi + $tstopf " | bc -l`
135 fi
136
137 # build query to update runinfo in DB
138 query="UPDATE RunInfo SET "
139
140 # get ctrl dev
141 if [ -e $trackingfile ] && [ $tracknumerrors -eq 0 ]
142 then
143 ctrldevs=( `root -q -b -l fact/processing/ctrldev.C\("\"$trackingfile\""\,$tstart\,$tstop\) | grep "result" | grep -E -o '[0-9]+[.]?[0-9]*'` )
144 if [ "${ctrldevs[0]}" == "" ]
145 then
146 query=$query"fCtrlDevMean=NULL"
147 else
148 query=$query"fCtrlDevMean="${ctrldevs[0]}
149 fi
150 if [ "${ctrldevs[1]}" == "" ]
151 then
152 query=$query", fCtrlDevRms=NULL"
153 else
154 query=$query", fCtrlDevRms="${ctrldevs[1]}
155 fi
156 else
157 query=$query" fCtrlDevMean=NULL"
158 query=$query", fCtrlDevRms=NULL"
159 fi
160
161 # add where condition
162 query=$query" WHERE fNight="$runnumber" AND fRunID="$filenum
163
164 # send query to DB
165 sendquery >/dev/null
166 done
167done
168
169finish
170
171
Note: See TracBrowser for help on using the repository browser.