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

Last change on this file since 598 was 598, checked in by campagne, 13 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.