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