source: BAORadio/AmasNancay/trunk/anagainmaker.sh@ 598

Last change on this file since 598 was 598, checked in by campagne, 14 years ago

cleaning of the set of scripts, and improve th submit2ge options, and improve analysis (jec)

  • Property svn:executable set to *
File size: 7.6 KB
Line 
1#!/bin/sh -xvf
2#download SCA file, proceed to introspection, and upload results
3DATE=/bin/date
4GREP=/bin/grep
5AWK=/bin/awk
6ECHO=/bin/echo
7WC=/usr/bin/wc
8CAT=/bin/cat
9PRINTF=/usr/bin/printf
10FIND=/usr/bin/find
11MKDIR=/bin/mkdir
12XARGS=/usr/bin/xargs
13SORT=/bin/sort
14RM=/bin/rm
15TR=/usr/bin/tr
16CP=/bin/cp
17LS=/bin/ls
18CHMOD=/bin/chmod
19
20DefaultIFS=$' \t\n'
21IFS=$DefaultIFS
22
23#set Irods environment
24. /usr/local/shared/bin/irods_env.sh -noverbose
25
26scriptName="`basename $0`"
27#$ECHO "Processing script ${scriptName} at `date`"
28
29#$ECHO "SHOULD BE RETUNED FOR THE inPath cmd line of analyse.cc (Sorry...): 21/7/11 by JEC"
30#exit 1
31
32#Process cmd line args: the -src option is mandatory (source name as Abell85)
33sourceRadio=
34dateSelected=
35#use -sim option to simulate processing (debug the script as if...)
36simulationMode=Off
37while [ $# -gt 0 ]
38do
39 case "$1" in
40 -src) sourceRadio=$2; shift;;
41 -date) dateSelected=$2; shift;;
42 -sim) simulationMode=On;;
43 -h)
44 echo >&2 \
45 "usage: $0 -src souce -date YYYYMMDD [-sim]"
46 exit 1;;
47 *) break;; # terminate while loop
48 esac
49 shift
50done
51
52if [ ${simulationMode} = "On" ]; then
53 $ECHO "INFO ${scriptName} running in SIMUL mode"
54fi
55
56
57if [ "<${sourceRadio}>" = "<>" ]; then
58 $ECHO "FATAL: You have forgotten to select the source option (-src)"
59 exit 1
60fi
61
62case ${sourceRadio} in
63 Abell85) $ECHO "INFO (${scriptName}): process ${sourceRadio}";;
64 Abell2440) $ECHO "INFO (${scriptName}): process ${sourceRadio}";;
65 Abell1205) $ECHO "INFO (${scriptName}): process ${sourceRadio}";;
66 NGC4383) $ECHO "INFO (${scriptName}): process ${sourceRadio}";;
67 *) ECHO "FATAL (${scriptName}): process ${sourceRadio} not yet foreseen"
68 exit 1;;
69esac
70
71
72srclower=`${ECHO} ${sourceRadio} | ${TR} "[:upper:]" "[:lower:]" `
73
74#Path to public backupable path
75publicpath="/afs/in2p3.fr/home/c/campagne/public"
76
77
78#temporary files to synchronize scripts
79tmppublicpath=${TMPPUBLICPATH}
80$LS -l ${tmppublicpath} > /dev/null
81#clean previous spurious files
82$RM -f ${tmppublicpath}/*.finished
83
84
85#Path where the job will do temporary IO
86. ${SCRIPTPATH}/isInteractive.sh
87isInteractive=$(isInteractive)
88if [ ${isInteractive} == "1" ]; then
89 $ECHO "Usage in INTERACTIVE may be destructive... To be used with great care !!!!"
90 exit 0;
91fi
92
93. ${SCRIPTPATH}/set_iojobpath.sh
94iojobpath=$(set_iojobpath)
95cd ${iojobpath}
96
97localpath="${sourceRadio}"
98$MKDIR -p ./${localpath}
99cd ./${localpath}
100
101#save the top directory
102topDir=`pwd`
103
104#Path of the utility scripts
105scriptpath=${SCRIPTPATH}
106
107
108#JEC 1/10/11 Use generic baodaqstatus name
109#get the daq current irod status
110#tag=`${DATE} +%F`
111#OUT1=${publicpath}/baodaqstatus-${tag}.txt
112OUT1=${publicpath}/baodaqstatus-current.txt
113
114if [ ! -e ${OUT1} -o ! -r ${OUT1} ]; then
115 $ECHO "FATAL (${scriptName}): ${OUT1} has a problem"
116 exit 1
117fi
118
119#
120$ECHO "You have selected sourceRadio = $sourceRadio [date = ${dateSelected}]"
121tableau=( `$GREP -i "${dateSelected}${srclower}" ${OUT1} | $AWK '( NF==4 ) { print $2 }' ` )
122IFS='
123'
124tableau=( $( $PRINTF "%s\n" "${tableau[@]}" | $AWK 'x[$0]++ == 0' ) )
125IFS=$DefaultIFS
126
127
128for i in ${tableau[@]}
129 do
130# start a "fresh" session
131 cd ${topDir}
132 $LS | $XARGS -i $RM -rf {}
133
134 $ECHO "DEBUG (${scriptName}): irods root dir $i"
135 dateDAQ=`$ECHO ${i} | $AWK '{split($0,a,"/"); print a[6];}' | $AWK "{sub(/${srclower}/,\"\"); print}"`
136
137 $LS -lrt
138
139######
140 $ECHO ">>>>>>>>>>>>> ANALYSIS Part of ${sourceRadio} ${dateDAQ}"
141#go to the .../source/date-sourcelowercase directory
142 $MKDIR -p ${topDir}/${dateDAQ}${srclower}
143 cd ${topDir}/${dateDAQ}${srclower}
144 aboveOnOffDir=`pwd`
145 $ECHO "DEBUG (${scriptName}): we are in directory: <`pwd`>"
146# So the input files are there, so the fits file can be determined
147 mode="Off"
148
149 input4gainOk1=`ils ${i}/Off 2>&1 | $GREP -i "^ERROR" | $WC -l`
150 input4gainOk2=`ils ${i}/Off 2>&1 | $GREP -i "gaincycle"`
151 if [ $input4gainOk1 -eq 0 -a "<${input4gainOk2}>" != "<>" ]; then
152 gaincycle=`$ECHO ${input4gainOk2} | $AWK '($1 == "C-"){print $2}'| $XARGS -i basename {}`
153 else
154 $ECHO "INFO ${scriptName}: no gaincycle for ${i}"
155 continue
156 fi
157
158 spectraGenDirName=`$ECHO ${gaincycle} | $AWK '{match($0,"[a-zA-Z]+",arr); print arr[0]}'`
159 cycleNumber=`$ECHO ${gaincycle} | $AWK '{match($0,"[0-9]+",arr); print arr[0]}'`
160#care: the gaincycle variable contains the cycle number
161 $ECHO "DEBUG (${scriptName}): START download the fits files"
162 inFileDirectory="./${mode}"
163 $MKDIR -p ${inFileDirectory}
164 irodsDownDir="${i}/${mode}/${gaincycle}"
165 OUT=./getInFits.$$
166 iget -r -f -K ${irodsDownDir} ${inFileDirectory} > ${OUT} 2>&1
167 $LS ${inFileDirectory}/${gaincycle}
168 igetStatus=`$GREP "^ERROR" ${OUT}`
169 if [ "<$igetStatus>" != "<>" ]; then
170 $ECHO "FATAL (${scriptName}): error while iget fits files:"
171 $ECHO $igetStatus
172 continue
173 fi
174 $RM -f ${OUT}
175 $ECHO "DEBUG (${scriptName}): END download the fits files"
176#Get sca files
177 $ECHO "DEBUG (${scriptName}): START call getscafiles.sh ${sourceRadio} ${dateDAQ}"
178 OUT1=./getScaStatus.$$
179 $RM -f ${tmppublicpath}/getscafiles.finished
180 ${scriptpath}/getscafiles.sh ${sourceRadio} ${dateDAQ} > ${OUT1} 2>&1
181# AST 21/10/2011: comment while as it blocks the job
182# while [ ! -f "${tmppublicpath}/getscafiles.finished" ]; do
183# $ECHO "INFO (${scriptName}): waiting for ${tmppublicpath}/getscafiles.finished"
184# date +%T
185# sleep 30
186# done
187 $RM ${tmppublicpath}/getscafiles.finished
188 $ECHO "DEBUG (${scriptName}): END"
189#
190 getScaStatus=`$GREP "^\(FATAL\|ERROR\)" ${OUT1}`
191#
192 if [ "<${getScaStatus}>" != "<>" ]; then
193 $ECHO "FATAL (${scriptName}): error to get sca file for $sourceRadio $dateDAQ"
194 $ECHO "DEBUG (${scriptName}): START with cat ${OUT1}"
195 $CAT ${OUT1}
196 $ECHO "DEBUG (${scriptName}): END"
197 continue
198 fi
199 $RM -f ${OUT1}
200 $ECHO "DEBUG (${scriptName}): where am i `pwd`"
201 $LS -lrt
202
203 scaFile=`$FIND . -name "sca*.sum.trans" | $XARGS -i basename {}`
204#
205#the default spectra name is medfiltmtx, otherwise use -specname <a_string>
206 logFile="analyse_GAIN_${sourceRadio}_${dateDAQ}.log"
207 $ECHO "DEBUG (${scriptName}): execute the analysis... should not take long. `date`"
208 if [ ${simulationMode} = "On" ]; then
209 $ECHO "SIMUL: ${scriptpath}/Objs/analyse -act gain -inPath ${iojobpath} -source ${sourceRadio} -date ${dateDAQ} -sca ${scaFile} -specdir ${spectraGenDirName} -mode ${mode} -numcycle ${cycleNumber},${cycleNumber} -debug 1 >& ${logFile}"
210 cat > ${logFile} <<EOF
211 Ok gain finished
212EOF
213
214 else
215 ${scriptpath}/Objs/analyse -act gain -inPath ${iojobpath} -source ${sourceRadio} -date ${dateDAQ} -sca ${scaFile} -specdir ${spectraGenDirName} -mode ${mode} -numcycle ${cycleNumber},${cycleNumber} -debuglev 1 >& ${logFile}
216 fi
217#
218 $ECHO "DEBUG (${scriptName}): analysis finished `date`. Look for errors before saving to Irods"
219 rcstatus=`$GREP -i "OK gain finished" ${logFile} | $WC -l`
220 if [ ${rcstatus} -eq 0 ]; then
221 $ECHO "INFO (${scriptName}): analysis problem for ${sourceRadio} ${dateDAQ}"
222 $ECHO " START logfile"
223 $CAT ${logFile}
224 $ECHO " END logFile"
225#clean and leave
226 cd ${aboveOnOffDir}
227 $RM -rf ./*
228 continue
229 fi
230#Save into Irods
231 $ECHO "DEBUG (${scriptName}): START save output files"
232 $LS ${aboveOnOffDir}
233#use -f option of iput ONLY to force override
234 if [ ${simulationMode} = "On" ]; then
235 $ECHO "SIMUL: here we look for gain file and put them in Irods"
236 else
237 $FIND . -name "gain_*" -print | $XARGS -i iput -f -v -K {} ${i}
238 fi
239#save analysis logfile
240 $LS -l ${tmppublicpath} > /dev/null
241 $CP ${logFile} ${tmppublicpath}
242 $ECHO "DEBUG (${scriptName}): END save output files"
243#clean
244 cd ${aboveOnOffDir}
245 $LS | $XARGS -i $RM -rf {}
246
247done
248
249exit 0
Note: See TracBrowser for help on using the repository browser.