Updating steering macros according to latest changes in alien:
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass1 / runCPass1.sh
1 #!/bin/bash
2
3 # Script to run:
4 #    1. reconstruction
5 #    2. calibration
6 #
7 # Files assumed to be in working directory:
8 # recCPass1.C          - reconstruction macro
9 # runCalibTrain.C     - calibration/filtering macro
10 # Arguments (run locally):
11 #    1  - raw data file name
12 #    2  - number of events to be processed
13 #    3  - run number 
14
15 # example:
16 # runCPass1.sh raw.root  50  104892
17
18 #ALIEN setting
19 # $1 = raw input filename
20 runNum=`echo $1 | cut -d "/" -f 6 | sed 's/^0*//'`
21
22 if [ $# -eq 1 ]; then
23     # alien Setup
24     nEvents=99999999
25     ocdbPath="raw://"
26     triggerOptions="?Trigger=kCalibBarrel"
27 fi
28
29 if [ $# -ge 4 ]; then
30     # local setup
31     nEvents=$2
32     runNum=$3
33     ocdbPath=$4
34     triggerOptions="?Trigger=kCalibBarrel"
35 fi
36
37 if [ $# -eq 5 ]; then
38     # local setup in case we specify the trigger mask
39     triggerOptions=$5
40 fi
41
42 CHUNKNAME="$1"
43
44 if [ "${CHUNKNAME:0:1}" = "/" ]; then
45     FILENAME=${CHUNKNAME##*/}
46
47     if [ -f "$FILENAME" ]; then
48         # locally downloaded chunk
49         CHUNKNAME="`pwd`/$FILENAME"
50     else
51         # one chunk from alien (nodownload option to the collection)
52         CHUNKNAME="alien://$CHUNKNAME"
53     fi
54 fi
55
56 if [ -f "wn.xml" ]; then
57     # several chunks accessed remotely
58     CHUNKNAME="collection://wn.xml"
59 fi
60
61 echo "* ************************"
62 echo "* runCPass1.sh $*"
63 echo "* Chunk name: $CHUNKNAME"
64 echo "* Run number: $runNum"
65 echo "* nEvents: $nEvents"
66 echo "* runNum: $runNum"
67 echo "* ocdbPath: $ocdbPath"
68 echo "* triggerOptions: $triggerOptions"
69 echo "* ************************"
70
71 mkdir Barrel OuterDet
72
73 if [ -f Run0_999999999_v3_s0.root ]; then
74     echo "* TPC correction file found"
75
76     mkdir -p TPC/Calib/Correction
77     mv Run0_999999999_v3_s0.root TPC/Calib/Correction/
78
79     for DIR in Barrel OuterDet; do
80         mkdir -p $DIR/TPC/Calib/Correction
81         ln -s ../../../../TPC/Calib/Correction/Run0_999999999_v3_s0.root $DIR/TPC/Calib/Correction/Run0_999999999_v3_s0.root
82     done
83 fi
84
85 echo "* PATH: $PATH"
86 echo "* LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
87 echo
88
89 if [ "$2" == "OCDB" ]; then
90     export OCDB_SNAPSHOT_CREATE="kTRUE"
91     export OCDB_SNAPSHOT_FILENAME="OCDB.root"
92
93     echo "* Running AliRoot to generate the OCDB based on $CHUNKNAME"
94
95     echo "OCDB/recCPass1.C" >&2
96     time aliroot -l -b -q recCPass1.C\(\"$CHUNKNAME\"\) &> rec.log
97     exitcode=$?
98     echo "Exit code: $exitcode"
99
100     echo "* Reconstruction ran in fake mode to create OCDB.root, exiting quickly now"
101     touch OCDB.generating.job
102
103     if [ -f OCDB.root ]; then
104         echo "* OCDB.root was indeed produced"
105     else
106         echo "* Error: OCDB.root was NOT generated !!!"
107         exit 1
108     fi
109
110     exit $exitcode
111 fi
112
113 for COMMON_FILE in wn.xml localOCDBaccessConfig.C AddTaskTPCCalib.C OCDB.root QAtrain_duo.C; do
114     if [ -f $COMMON_FILE ]; then
115         ln -s ../$COMMON_FILE Barrel/$COMMON_FILE
116         ln -s ../$COMMON_FILE OuterDet/$COMMON_FILE
117     fi
118 done
119
120 for BARREL_FILE in recCPass1.C runCalibTrain.C; do
121     ln -s ../$BARREL_FILE Barrel/$BARREL_FILE
122 done
123
124 for OUTER_FILE in recCPass1_OuterDet.C; do
125     ln -s ../$OUTER_FILE OuterDet/$OUTER_FILE
126 done
127
128 ####################################   Barrel   #######################################
129
130 cd Barrel
131
132 echo "* Running AliRoot to reconstruct barrel of $CHUNKNAME"
133
134 echo executing aliroot -l -b -q "recCPass1.C(\"$CHUNKNAME\", $nEvents, \"$ocdbPath\", \"$triggerOptions\")"
135 time aliroot -l -b -q "recCPass1.C(\"$CHUNKNAME\", $nEvents, \"$ocdbPath\", \"$triggerOptions\")" &> ../rec.log
136 exitcode=$?
137 echo "Exit code: $exitcode"
138
139 if [ $exitcode -ne 0 ]; then
140     exit $exitcode
141 fi
142
143 mv syswatch.log ../syswatch_rec_Barrel.log
144
145 echo "* Running AliRoot to make calibration..."
146
147 echo executing aliroot -l -b -q "runCalibTrain.C($runNum,\"AliESDs.root\",\"$ocdbPath\")"
148 time aliroot -l -b -q "runCalibTrain.C($runNum,\"AliESDs.root\",\"$ocdbPath\")" &> ../calib.log
149 exitcode=$?
150 echo "Exit code: $exitcode"
151
152 if [ $exitcode -ne 0 ]; then
153     exit $exitcode
154 fi
155
156 mv syswatch.log ../syswatch_calib.log
157
158 if [ -f QAtrain_duo.C ]; then
159     echo "* Running the QA train (barrel) ..."
160
161 #    echo executing aliroot -b -q "QAtrain_duo.C(\"_barrel\",$runNum,\"$ocdbPath\")"
162 #    time aliroot -b -q "QAtrain_duo.C(\"_barrel\",$runNum,\"$ocdbPath\")" &> ../qa_barrel.log
163
164     echo executing aliroot -b -q "QAtrain_duo.C(\"_barrel\",$runNum)"
165     time aliroot -b -q "QAtrain_duo.C(\"_barrel\",$runNum)" &> ../qa_barrel.log
166
167     exitcode=$?
168     echo "Exit code: $exitcode"
169
170     if [ $exitcode -ne 0 ]; then
171         exit $exitcode
172     fi
173
174     for file in *.stat; do
175         mv $file ../$file.qa_barrel
176     done
177 fi
178
179 mv AliESDs.root ../AliESDs_Barrel.root
180 mv AliESDfriends.root ../AliESDfriends_Barrel.root
181
182 for file in AliESDfriends_v1.root QAresults_barrel.root EventStat_temp_barrel.root AODtpITS.root; do
183     if [ -f "$file" ]; then
184         mv "$file" ../
185     fi
186 done
187
188 ####################################   Outer   #######################################
189
190 cd ../OuterDet
191
192 echo "* Running AliRoot to reconstruct outer of $CHUNKNAME"
193
194 echo executing aliroot -l -b -q "recCPass1_OuterDet.C(\"$CHUNKNAME\", $nEvents, \"$ocdbPath\")"
195 time aliroot -l -b -q "recCPass1_OuterDet.C(\"$CHUNKNAME\", $nEvents, \"$ocdbPath\")" &> ../rec_Outer.log
196 exitcode=$?
197 echo "Exit code: $exitcode"
198
199 if [ $exitcode -ne 0 ]; then
200     exit $exitcode
201 fi
202
203 mv syswatch.log ../syswatch_rec_Outer.log
204
205 if [ -f QAtrain_duo.C ]; then
206     echo "* Running the QA train (outer) ..."
207
208 #    echo executing aliroot -b -q "QAtrain_duo.C(\"_outer\",$runNum,\"$ocdbPath\")"
209 #    time aliroot -b -q "QAtrain_duo.C(\"_outer\",$runNum,\"$ocdbPath\")" &> ../qa_outer.log
210
211     echo executing aliroot -b -q "QAtrain_duo.C(\"_outer\",$runNum)"
212     time aliroot -b -q "QAtrain_duo.C(\"_outer\",$runNum)" &> ../qa_outer.log
213
214     exitcode=$?
215     echo "Exit code: $exitcode"
216
217     if [ $exitcode -ne 0 ]; then
218         exit $exitcode
219     fi
220
221     for file in *.stat ; do
222         mv $file ../$file.qa_outer
223     done
224 fi
225
226 mv AliESDs.root ../AliESDs_Outer.root
227 mv AliESDfriends.root ../AliESDfriends_Outer.root
228
229 for file in QAresults_outer.root EventStat_temp_outer.root; do
230     if [ -f "$file" ]; then
231         mv "$file" ../
232     fi
233 done
234
235 exit $exitcode