97ca8e8e5af9e225e9b3a0a46a281a8ade9887d5
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / Run.sh
1 #!/bin/bash 
2
3 ana=$ALICE_ROOT/PWG2/FORWARD/analysis2
4 nev=-1
5 rebin=1
6 vzmin=-10
7 vzmax=10
8 centlow=0
9 centhigh=100
10 batch=0
11 gdb=0
12 proof=0
13 mc=0
14 type=INEL
15 cms=900
16 hhd=1
17 comp=1
18 cent=0
19 tit=
20 others=0
21 published=1
22 ratios=1
23 asymm=1 
24 dopass1=0
25 dopass2=0
26 dopass3=0
27 pass1=MakeAOD.C
28 pass2=MakedNdeta.C
29 pass3=DrawdNdeta.C++g
30 output1=forward.root
31 output2=forward_dndeta.root
32 gdb_script=$ALICE_ROOT/PWG2/FORWARD/analysis2/gdb_cmds
33 max_rotate=10
34
35 usage()
36 {
37 cat<<EOF
38 Usage: $0 [OPTIONS]
39
40 Do Pass1 and Pass2 on ESD files in current directory.  
41
42 Options:
43         -h,--help               This help                  
44         -n,--events N           Number of events            ($nev)
45         -1,--pass1              Run pass 1, only AOD        ($dopass1)
46         -2,--pass2              Run pass 2, only Hists      ($dopass2)
47         -3,--pass3              Draw results                ($dopass3)
48         -v,--vz-min CM          Minimum value of vz         ($vzmin)
49         -V,--vz-max CM          Maximum value of vz         ($vzmax)
50         -t,--trigger TYPE       Select trigger TYPE         ($type)
51         -b,--batch              Do batch processing         ($batch)
52         -P,--proof NWORKERS     Run in PROOF(Lite) mode     ($proof)
53         -M,--mc                 Run over MC data            ($mc)
54         -g,--gdb                Run in GDB mode             ($gdb)
55         -E,--eloss              Run energy loss script      
56         -r,--rebin              Rebin factor                ($rebin)
57         -C,--use-centrality     Run centrality task         ($cent)
58         -O,--show-older         Show older data             ($others)
59         -J,--show-published     Show ALICE published data   ($published)
60         -R,--show-ratios        Show ratios to other data   ($ratios)
61         -Z,--show-asymmetry     Show asymmetry              ($asymm)
62
63 TYPE is a comma or space separated list of 
64  
65   INEL        Inelastic triggers (V0A|V0C|SPD)
66   INEL>0      As above + N_ch > 0 in -0.5<eta<+0.5
67   NSD         Non-single diffractive ((VOA&VOC)|N_ch > 5 -1.9<eta<+1.9)
68
69 If NWORKERS is 0, then the analysis will be run in local mode. 
70 EOF
71 }
72
73 toggle()
74 {
75     echo $((($1+1)%2))
76 }
77
78 rotate() 
79 {
80     fname=$1 
81     if test -f ${fname}.${max_rotate} ; then 
82         echo "Maximum number of rotations - $max_rotate - for $fname found" \
83             > /dev/stderr 
84         exit 1
85     fi
86     let max=$max_rotate-1
87     for i in `seq $max -1 1` ; do 
88         if test ! -f ${fname}.${i} ; then continue ; fi 
89         let newn=$i+1
90         echo "Moving ${fname}.$i to ${fname}.$newn"
91         mv ${fname}.$i ${fname}.$newn
92     done
93     if test -f $fname ; then 
94         echo "Moving ${fname} to ${fname}.1"
95         mv $fname ${fname}.1 
96     fi
97 }
98
99
100 while test $# -gt 0 ; do
101     case $1 in 
102         -h|--help)            usage            ; exit 0;; 
103         -n|--events)          nev=$2           ; shift ;; 
104         -3|--pass3|-D|--draw) dopass3=`toggle $dopass3`   ;; 
105         -2|--pass2|-H|--hist) dopass2=`toggle $dopass2`   ;; 
106         -1|--pass1|-A|--aod)  dopass1=`toggle $dopass1`   ;; 
107         -b|--batch)           batch=`toggle $batch`       ;; 
108         -P|--proof)           proof=$2            ; shift ;; 
109         -C|--use-centrality)  cent=`toggle $cent` ;;
110         -M|--mc)              mc=`toggle $mc`     ;; 
111         -g|--gdb)             gdb=`toggle $gdb`   ;;
112         -r|--rebin)           rebin=$2            ; shift ;;
113         -v|--vz-min)          vzmin=$2            ; shift ;; 
114         -V|--vz-max)          vzmax=$2            ; shift ;; 
115         -E|--eloss)           pass1=MakeELossFits.C 
116                               pass2=scripts/ExtractELoss.C
117                               pass3=scripts/DrawAnaELoss.C 
118                               output1=forward_eloss.root 
119                               dopass2=1 
120                               ;;
121         -O|--show-older)      others=`toggle $others`   ;;
122         -J|--show-published)  published=`toggle $published`     ;;
123         -R|--show-ratios)     ratios=`toggle $ratios`   ;;
124         -Z|--show-asymmetry)  asymm=`toggle $asymm`     ;;
125         -t|--type)           
126             #if test "x$type" = "x" ; then type=$2 ; else type="$type|$2"; fi
127             type=$2
128             shift ;;
129         *) echo "$0: Unknown option '$1'" >> /dev/stderr ; exit 1 ;;
130     esac
131     shift
132 done 
133
134 if test $nev -lt 0 ; then 
135     base=dndeta_xxxxxxx
136 else 
137     base=`printf dndeta_%07d $nev`
138 fi
139 opts="-l -x"
140 opts1=""
141 redir=
142
143 if test $dopass2 -gt 0 ; then 
144     opts1="-q" 
145 fi
146 if test $batch -gt 0 ; then 
147     opts="-b -q $opts"
148     redir="2>&1 | tee ${base}.log"
149     echo "redir=$redir"
150 fi 
151 if test $dopass1 -gt 0 ; then 
152     rotate AliAOD.root
153     rotate ${output1}
154
155     if test $gdb -gt 0 ; then 
156         export PROOF_WRAPPERCMD="gdb -batch -x ${gdb_script} --args"
157     fi
158     echo "Running aliroot ${opts} ${opts1} ${ana}/${pass1}\(\".\",$nev,$proof,$mc\) $redir"
159     if test $batch -gt 0 ; then 
160         aliroot $opts $opts1 ${ana}/${pass1}\(\".\",$nev,$proof,$mc,$cent\) 2>&1 | tee ${base}.log
161     else 
162         aliroot $opts $opts1 ${ana}/${pass1}\(\".\",$nev,$proof,$mc,$cent\)
163     fi
164     fail=$?
165     if  test $fail -gt 0  ; then 
166         echo "Return value $fail not 0" ; exit $fail 
167     fi
168     if test ! -f ${output1} ; then 
169         echo "$output1 not made" ; exit 1; 
170     fi
171     if test ! -f AliAOD.root ; then 
172         echo "No AOD creates" ; exit 1;
173     fi
174     echo "Pass 1 done"
175 fi
176
177 if test $dopass2 -gt 0 ; then
178     rotate ${output2}
179
180     args=(\(\".\",$nev,\"$type\",$centlow,$centhigh,$vzmin,$vzmax,$proof\))
181     if test "x$pass1" = "xMakeELossFits.C" ; then 
182         args=(\(\"${output1}\"\))
183     fi
184     echo We are Running aliroot ${opts} ${opts1} ${ana}/${pass2}${args}
185     aliroot ${opts} ${opts1} ${ana}/${pass2}${args}
186
187     fail=$? 
188     if test $fail -gt 0 ; then 
189         echo "Return value $fail not 0" ; exit $fail 
190     fi
191     if test ! -f ${output2} ; then 
192         echo "$output2 not made" ; exit 1; 
193     fi
194     echo "Pass 2 done"
195 fi
196
197 if test $dopass3 -gt 0 ; then
198     tit=`echo $tit | tr ' ' '@'` 
199     flags=0
200     if test $others    -gt 0 ; then let flags=$(($flags|0x1)); fi
201     if test $published -gt 0 ; then let flags=$(($flags|0x2)); fi
202     if test $ratios    -gt 0 ; then let flags=$(($flags|0x4)); fi
203     if test $asymm     -gt 0 ; then let flags=$(($flags|0x8)); fi
204
205     args=(\(\"${output2}\"\,${flags},\"\",$rebin \))
206     if test "x$pass1" = "xMakeELossFits.C" ; then 
207         args=(\(\"${output1}\"\))
208     fi
209     
210     echo "Running aliroot ${opts} ${opts1} ${ana}/${pass3}${args}"
211     aliroot ${opts} ${ana}/${pass3}${args}
212 fi                               
213
214
215 #
216 # EOF
217 #