Remove the dollar-id-dollar in the responsible name which interfere with CDB_MD metad...
[u/mrichter/AliRoot.git] / MUON / AlirootRun_MUONtest.sh
CommitLineData
fa701981 1#!/bin/sh
2# $Id$
3
aefc4e02 4# first declare default values
5
6SIMULATION=1 # will perform simulation
7RECONSTRUCTION=1 # will perform reconstruction
388c6fb1 8RAW=1 # will reconstruct from raw data
aefc4e02 9CHECKS=1 # will perform checks
0be3d079 10SLASHTMP=1 #will use /tmp to put the temporary raw data
ed90feae 11NEVENTS=50 # will simulate 100 events
32bf5f82 12
5f3519d9 13#RECOPTIONS="SAVEDIGITS NOFASTDECODERS" # reconstruction options with non-high performance decoders
aefc4e02 14RECOPTIONS="SAVEDIGITS" # default reconstruction options
6ef73001 15MC="" # G3 Simulation with old Config.C
16#MC="g3" # G3 Simulation (with new config macros)
17#MC="g4" # G4 Simulation (with new config macros)
ca8c8223 18
aefc4e02 19OUTDIR=""
fa701981 20CURDIR=`pwd`
fa701981 21
745f6baf 22#RUN=0 # run number for OCDB access
aefc4e02 23SEED=1234567 # random number generator seed
24SIMDIR="generated" # sub-directory where to move simulated files prior to reco
05315e71 25DUMPEVENT=5 # event to be dump on files (set to negative to skip dumps)
aefc4e02 26
ca8c8223 27SIMCONFIG="$ALICE_ROOT/MUON/"$MC"Config.C"
28EMBEDWITH="" # no embedding by default
05315e71 29REALISTIC=0 # ideal simulation by default
ca8c8223 30
aefc4e02 31# next try to see if there are options of this script that want to change the
32# defaults
33
34EXIT=0
35
05315e71 36while getopts "SRZX:srxzn:tg:p:d:c:e:b:" option
aefc4e02 37do
38 case $option in
39 R ) RECONSTRUCTION=1;;
40 S ) SIMULATION=1;;
41 X )
42 CHECKS=1
43 DUMPEVENT=$OPTARG
44 ;;
388c6fb1 45 Z ) RAW=1;;
aefc4e02 46 r ) RECONSTRUCTION=0;;
47 s ) SIMULATION=0;;
48 x ) CHECKS=0;;
0be3d079 49 t ) SLASHTMP=0;;
388c6fb1 50 z ) RAW=0;;
aefc4e02 51 c ) SIMCONFIG=$OPTARG;;
52 d ) OUTDIR=$OPTARG;;
53 n ) NEVENTS=$OPTARG;;
0be3d079 54 g ) SEED=$OPTARG;;
aefc4e02 55 p ) RECOPTIONS=$OPTARG;;
ca8c8223 56 e ) EMBEDWITH=$OPTARG;;
05315e71 57 b )
58 REALISTIC=$OPTARG
59 RAW=0
60 ;;
aefc4e02 61 * ) echo "Unimplemented option chosen."
62 EXIT=1
63 ;;
64 esac
65done
66
67if [ ! -n "$OUTDIR" ]; then
6ef73001 68 if [ "$MC" = "" ]; then
69 OUTDIR=$CURDIR"/test_out."$NEVENTS
70 else
71 OUTDIR=$CURDIR"/"$MC"_test_out."$NEVENTS
72 fi
aefc4e02 73fi
74
75# look if there are some leftover options
76shift $(($OPTIND - 1))
77
78if [ $# -gt 0 ] || [ "$EXIT" -eq 1 ]; then
79 echo "ERROR : extra option not recognized"
0be3d079 80 echo "Usage: `basename $0` options (-SRXsrxn:tg:p:d:c:)"
aefc4e02 81 echo " -S (-s) perform (or not) simulation (default is do it, i.e -S)"
82 echo " -R (-r) perform (or not) reconstruction (default is do it, i.e. -R)"
83 echo " -X event (-x) perform (or not) checks and dumps (default is do it for event $DUMPEVENT, i.e. -X $DUMPEVENT)"
388c6fb1 84 echo " -Z (-z) perform reconstruction from raw data (from digits) (default is from raw data, i.e. -Z)"
aefc4e02 85 echo " -n nevents (int) number of events to simulate (default $NEVENTS)"
0be3d079 86 echo " -t will use OUTDIR as a tmp directory to generate raw data "
87 echo " -g seed (uint) seed to be used in simulation (default $SEED)"
aefc4e02 88 echo " -p recoptions (quotified string) reconstruction options to use (default \"$RECOPTIONS\")"
89 echo " -d full path to output directory (default $OUTDIR)"
90 echo " -c full path to configuration file for simulation (default $SIMCONFIG)"
ca8c8223 91 echo " -e full path to a galice.root file relating to SDigits to be merged (embedding)"
05315e71 92 echo " -b runnumber (int) make a realistic simulation using runnumber as anchor (default 0=ideal simulation)"
aefc4e02 93 exit 4;
94fi
95
ca8c8223 96
aefc4e02 97# printout the options
98echo "sim $SIMULATION rec $RECONSTRUCTION check $CHECKS"
99if [ "$SIMULATION" -eq 1 ]; then
100 echo "$NEVENTS events will be simulated, using the config found at $SIMCONFIG"
101fi
ca8c8223 102if [ -n "$EMBEDWITH" ]; then
103 echo "Will embed simulation with $EMBEDWITH"
104fi
05315e71 105if [ "$REALISTIC" -gt 0 ]; then
106 echo "Will use anchor run $REALISTIC"
107fi
aefc4e02 108if [ "$RECONSTRUCTION" -eq 1 ]; then
109echo "Reconstruction options to be used : $RECOPTIONS"
388c6fb1 110if [ "$RAW" -eq 0 ]; then
111echo "Will reconstruct from digits only (not from raw data)"
112fi
aefc4e02 113fi
114echo "Output directory will be : $OUTDIR"
115
116if [ "$SIMULATION" -eq 1 ]; then
117
118 rm -fr $OUTDIR
119 mkdir $OUTDIR
120
121fi
122
8601c864 123# Copy *ALL* the macros we need in the output directory, not to mess
124# with our source dir in any way.
125cp $ALICE_ROOT/MUON/.rootrc \
126 $ALICE_ROOT/MUON/rootlogon.C \
127 $ALICE_ROOT/MUON/runReconstruction.C $ALICE_ROOT/MUON/runSimulation.C \
128 $ALICE_ROOT/MUON/UpdateCDBCTPConfig.C \
129 $ALICE_ROOT/MUON/MUONefficiency.C \
130 $ALICE_ROOT/MUON/MUONTriggerEfficiency.C \
131 $ALICE_ROOT/MUON/MUONCheck.C \
132 $OUTDIR
aefc4e02 133
fa701981 134cd $OUTDIR
135
0be3d079 136if [ "$SLASHTMP" -eq 0 ]; then
137 mkdir ./tmp
138 mkdir ./tmp/mdc1
139 mkdir ./tmp/mdc2
140 mkdir ./tmp/mdc1/tags
141
142 chmod 777 ./tmp
143 chmod 777 ./tmp/mdc1
144 chmod 777 ./tmp/mdc2
145 chmod 777 ./tmp/mdc1/tags
146
147 export ALIMDC_RAWDB1=./tmp/mdc1
148 export ALIMDC_RAWDB2=./tmp/mdc2
149 export ALIMDC_TAGDB=./tmp/mdc1/tags
150fi
151
aefc4e02 152###############################################################################
153#
cbb5526b 154# Update CTP in OCDB for MUON Trigger
155#
156###############################################################################
157
6468ad42 158if [ ! -f $ALICE_ROOT/OCDB/GRP/CTP/Config/Run0_999999999_v0_s1.root ]; then
cbb5526b 159
160 echo "Updating GRP CTP config ..."
161
81b089d7 162 aliroot -b > $OUTDIR/updateCDBCTPConfig.out 2>&1 << EOF
ca8c8223 163 .L UpdateCDBCTPConfig.C++g
cbb5526b 164 UpdateCDBCTPConfig();
165 .q
166EOF
167
168fi
169
170
171###############################################################################
172#
aefc4e02 173# Performing SIMULATION
174#
175###############################################################################
fa701981 176
aefc4e02 177if [ "$SIMULATION" -eq 1 ]; then
fa701981 178
aefc4e02 179 echo "Running simulation ..."
858e5b75 180
05315e71 181 aliroot -l -b -q runSimulation.C\($SEED,$NEVENTS,\""$SIMCONFIG"\"\,\""$EMBEDWITH"\"\,$REALISTIC\) > $OUTDIR/testSim.out 2>&1
388c6fb1 182
aefc4e02 183 mkdir $OUTDIR/$SIMDIR
fa701981 184
388c6fb1 185 if [ "$RAW" -eq 1 ]; then
05315e71 186 if [ "$REALISTIC" -eq 0 ]; then # we can not move for realistic simulations as we need e.g. kinematics to propagate the simulated vertex to the reco.
187 echo "Moving generated files to $SIMDIR"
188 mv $OUTDIR/*QA*.root $OUTDIR/*.log $OUTDIR/$SIMDIR
189 mv $OUTDIR/MUON*.root $OUTDIR/TrackRefs*.root $OUTDIR/$SIMDIR
190 mv $OUTDIR/Kinematics*.root $OUTDIR/galice.root $OUTDIR/$SIMDIR
191 fi
388c6fb1 192 else
193 echo "Copying generated files to $SIMDIR"
194 cp $OUTDIR/*QA*.root $OUTDIR/*.log $OUTDIR/$SIMDIR
195 cp $OUTDIR/MUON*.root $OUTDIR/Kinematics*.root $OUTDIR/galice.root $OUTDIR/TrackRefs*.root $OUTDIR/$SIMDIR
196 fi
6ef73001 197
198 # save geometry file in a separate directory
199 if [ "$MC" = "g3" ]; then
200 rm -fr $ALICE_ROOT/MUON/geometry
201 mkdir $ALICE_ROOT/MUON/geometry
202 cp $OUTDIR/geometry.root $ALICE_ROOT/MUON/geometry
203 fi
204
205 # copy input geometry file in a current directory
206 if [ "$MC" = "g4" ]; then
207 cp $ALICE_ROOT/MUON/geometry/geometry.root $OUTDIR
208 fi
05315e71 209
210 cp $OUTDIR/geometry.root $OUTDIR/$SIMDIR/geometry.root
211
aefc4e02 212fi
fa701981 213
aefc4e02 214###############################################################################
215#
216# Performing RECONSTRUCTION
217#
218###############################################################################
219
220if [ "$RECONSTRUCTION" -eq 1 ]; then
221
388c6fb1 222 if [ "$RAW" -eq 1 ]; then
05315e71 223 if [ "$REALISTIC" -eq 0 ]; then
224 rm -f galice.root
225 fi
388c6fb1 226 fi
05315e71 227
228 if [ "$REALISTIC" -ne 0 ]; then
229 rm -f geometry.root
230 fi
388c6fb1 231
232 rm -f AliESD*.root *QA*.root
233
aefc4e02 234 echo "Running reconstruction ..."
235
236 cd $OUTDIR
237
05315e71 238 RAWOCDB=kFALSE
ca8c8223 239
240 if [ -n "$EMBEDWITH" ]; then
05315e71 241 RAWOCDB=kTRUE
242 fi
243
244 if [ "$REALISTIC" -gt 0 ]; then
245 RAWOCDB=kTRUE
ca8c8223 246 fi
247
388c6fb1 248 if [ "$RAW" -eq 1 ]; then
249
05315e71 250 aliroot -l -b -q runReconstruction\.C\($SEED,\""$OUTDIR/raw.root"\",\""$RECOPTIONS"\",$RAWOCDB\) > $OUTDIR/testReco.out 2>&1
388c6fb1 251
252 else
aefc4e02 253
05315e71 254 aliroot -l -b -q runReconstruction\.C\($SEED,\"""\",\""$RECOPTIONS"\",$RAWOCDB\) > $OUTDIR/testReco.out 2>&1
388c6fb1 255
256 fi
257
aefc4e02 258fi
858e5b75 259
aefc4e02 260###############################################################################
261#
262# Performing CHECKS (and dumps)
263#
264###############################################################################
32bf5f82 265
aefc4e02 266if [ "$CHECKS" -eq 1 ]; then
8dc57946 267
029d450d 268 if [ -f "$OUTDIR/$SIMDIR/galice.root" ]; then
32bf5f82 269
aefc4e02 270 echo "Running efficiency ..."
271
81b089d7 272 aliroot -b > $OUTDIR/testResults.out 2>&1 << EOF
ca8c8223 273 .L MUONefficiency.C++g
aefc4e02 274 // no argument assumes Upsilon but MUONefficiency(443) works on Jpsi
275 MUONefficiency("$OUTDIR/$SIMDIR/galice.root");
276 .q
277EOF
278
029d450d 279 if [ -f "$OUTDIR/galice.root" ]; then
aefc4e02 280
281 echo "Running Trigger efficiency ..."
81b089d7 282 aliroot -b > $OUTDIR/testTriggerResults.out 2>&1 << EOF
ca8c8223 283 .L MUONTriggerEfficiency.C++g
aefc4e02 284 MUONTriggerEfficiency("$OUTDIR/$SIMDIR/galice.root", "$OUTDIR/galice.root", 1);
285 .q
8dc57946 286EOF
858e5b75 287
029d450d 288 if [ -f "$OUTDIR/AliESDs.root" ]; then
289
290 echo "Running check ..."
81b089d7 291 aliroot -b > $OUTDIR/testCheck.out 2>&1 << EOF
029d450d 292 gSystem->Load("libMUONevaluation");
ca8c8223 293 .L MUONCheck.C++g
029d450d 294 MUONCheck(0, $NEVENTS-1, "$OUTDIR/$SIMDIR/galice.root", "$OUTDIR/galice.root", "$OUTDIR/AliESDs.root");
295 .q
aefc4e02 296EOF
029d450d 297 fi
aefc4e02 298 fi
299 fi
05315e71 300
301if [ "$DUMPEVENT" -ge 0 ]; then
aefc4e02 302
303 echo "Running dumps for selected event ($DUMPEVENT) ..."
304
305 if [ -f "$OUTDIR/$SIMDIR/galice.root" ]; then
0d2fa09b 306 aliroot -l -b << EOF
ca8c8223 307 AliCDBManager* man = AliCDBManager::Instance();
162637e4 308 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
aefc4e02 309 AliMUONMCDataInterface mcdSim("$OUTDIR/$SIMDIR/galice.root");
310 mcdSim.DumpKine($DUMPEVENT); > $OUTDIR/dump.$DUMPEVENT.kine
311 mcdSim.DumpHits($DUMPEVENT); > $OUTDIR/dump.$DUMPEVENT.hits
312 mcdSim.DumpTrackRefs($DUMPEVENT); > $OUTDIR/dump.$DUMPEVENT.trackrefs
313 mcdSim.DumpDigits($DUMPEVENT,true); > $OUTDIR/dump.$DUMPEVENT.simdigits
314 mcdSim.DumpSDigits($DUMPEVENT,true); > $OUTDIR/dump.$DUMPEVENT.sdigits
315 .q
316EOF
317 else
318 echo "$OUTDIR/$SIMDIR/galice.root is not there. Skipping sim dumps"
319 fi
320
321 if [ -f "$OUTDIR/galice.root" ]; then
0d2fa09b 322 aliroot -l -b << EOF
07be5a4f 323 AliCDBManager* man = AliCDBManager::Instance();
162637e4 324 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
aefc4e02 325 AliMUONDataInterface dRec("$OUTDIR/galice.root");
326 dRec.DumpDigits($DUMPEVENT,true); > $OUTDIR/dump.$DUMPEVENT.recdigits
327 dRec.DumpRecPoints($DUMPEVENT); > $OUTDIR/dump.$DUMPEVENT.recpoints
aefc4e02 328 dRec.DumpTrigger($DUMPEVENT); > $OUTDIR/dump.$DUMPEVENT.trigger
329 .q
330EOF
331 else
332 echo "$OUTDIR/galice.root is not there. Skipping rec dumps"
333 fi
334fi
32bf5f82 335
05315e71 336fi
337
fa701981 338echo "Finished"
aefc4e02 339echo "... see results in $OUTDIR"
fa701981 340
341cd $CURDIR