]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/LambdaK0PbPb/MainStreamAnalysis/MultYields2QA.C
Renaming subdirectory
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0PbPb / MainStreamAnalysis / MultYields2QA.C
1 #include "AliMassFitControl.h"
2
3 // Two functions now.
4 // MultYields3 takes a 3D histogram and calls the 2D function MultYields2
5 // MultYields2 could be called directly if we only have a 2D histogram
6
7 void MultYields3(TH3F *PtMassMult, Int_t particleMode, Int_t MultBin, Char_t* label){
8
9   // Leave open possibility to choose different values depending on MultBin - LSB
10   Float_t MultLo[1] = {0};
11   Float_t MultHi[1] = {300};
12
13   //Make 2D projections from the 3D histogram
14   PtMassMult->GetZaxis()->SetRange(MultLo[MultBin],MultHi[MultBin]);
15   TH2F* hParMass = (TH2F*)PtMassMult->Project3D("XY");// FIX:MF
16   hParMass->SetTitle("PtMass");
17   
18   //hParMass->Draw(); // Drawing invokes default c1 canvas making it inaccessible in MultYields2 - TO FIX
19   MultYields2(hParMass, particleMode,MultBin,label);
20   
21 }
22
23 void MultYields2QA(TH2F *hParMass, Int_t particleMode, Int_t ihist,Int_t Nev = 1, Int_t MultBin, Char_t* label){
24
25   hParMass->Draw();
26   ////////////////////////// minhist is needed by AliMassFitControl.h (in case the minimum on the parameter's axis is arbitrary value); 
27   Double_t minhist = 0;
28   minhist = hParMass->GetBinLowEdge(1);
29   cout<<" value of the first bin of parameter : " <<minhist << endl;
30
31   // Do .L on command line first
32   //gROOT->LoadMacro("macros/PtMassAna2.C");
33   /* Modifications to produce a single uncorrected spectrum in a particular mult. bin for K0 or Lambda
34      Old ratio code preserved in MultYieldsRatio.C
35      Dec 2003 */
36   Char_t* part; //for name of particle
37   Float_t BR; //branching ratio - check them
38   if (particleMode==0){
39     part = "K0";
40     BR=0.686;
41   } else if (particleMode==1){
42     part = "Lambda";
43     BR=0.639;
44   } else if (particleMode==2){
45     part = "AntiLambda";
46     BR=0.639;
47   } else if (particleMode==3){
48     part = "Lambda+antiLambda";
49     BR=0.639;
50   } else if (particleMode==4){
51     part = "Xi";
52     BR=1.0; // Should be Lam ->p pi Br
53   } else if (particleMode ==6){
54     part = "Omega";
55     BR=1.0; // Should be Lam->p pi  * Om -> K Lam
56   }
57   
58
59
60   TString title[1]={"MinimumBias"};
61   //Make 2D projections from the 3D histogram
62   //Minbias (i.e. everything)
63   
64   TObjArray *controllerArray = new TObjArray(40,1); // 2nd arg means can count from 1!
65
66   //Here probably need switch-case, depending on mult bin and particle
67   // LoPt, HiPt, polynomial order, rebinning factor
68
69   /////  LAMBDA and LAMBDA+ANTILAMBDA (Combination)
70
71
72
73   if(particleMode == 1 || particleMode == 3){ // Lambda or Lambda+Anti-Lambda
74     if(ihist ==0){
75       //           controllerArray->AddLast(new AliMassFitControl(0.2,0.3, 2,2, 1.095,1.17)); //1
76       //             controllerArray->AddLast(new AliMassFitControl(0.3,0.4, 2,2, 1.095,1.17)); //2
77       //             controllerArray->AddLast(new AliMassFitControl(0.4,0.5, 2,2, 1.095,1.17)); //3
78       //             controllerArray->AddLast(new AliMassFitControl(0.5,0.6, 2,2, 1.095,1.17)); //4
79             controllerArray->AddLast(new AliMassFitControl(0.6,0.7, 1,2, 1.1,1.14)); //5    //1
80        controllerArray->AddLast(new AliMassFitControl(0.7,0.8, 2,2, 1.099,1.14)); //6        //2
81        controllerArray->AddLast(new AliMassFitControl(0.8,0.9, 2,2, 1.097,1.14)); //7        //3
82        controllerArray->AddLast(new AliMassFitControl(0.9,1.0, 2,2, 1.096,1.144)); //1   //4
83       controllerArray->AddLast(new AliMassFitControl(1.0,1.1, 2,2, 1.095,1.14)); //2         //5
84       controllerArray->AddLast(new AliMassFitControl(1.1,1.2, 2,2, 1.099,1.14)); //3         //6
85       controllerArray->AddLast(new AliMassFitControl(1.2,1.3, 2,2, 1.099,1.14)); //4         //7
86       controllerArray->AddLast(new AliMassFitControl(1.3,1.4, 2,2, 1.099,1.14)); //5         //8
87       controllerArray->AddLast(new AliMassFitControl(1.4,1.5, 2,2, 1.095,1.14)); //6         //9
88       controllerArray->AddLast(new AliMassFitControl(1.5,1.6, 2,2, 1.095,1.14)); //7        //10
89       controllerArray->AddLast(new AliMassFitControl(1.6,1.7, 2,2, 1.095,1.152)); //8        //11
90       controllerArray->AddLast(new AliMassFitControl(1.7,1.8, 2,2, 1.096,1.143)); //9        //12
91       controllerArray->AddLast(new AliMassFitControl(1.8,1.9, 2,2, 1.098,1.143)); //10       //13
92       controllerArray->AddLast(new AliMassFitControl(1.9,2.0, 2,2, 1.098,1.143)); //11       //14
93       controllerArray->AddLast(new AliMassFitControl(2.0,2.2, 2,2, 1.098,1.16)); //12        //15
94       controllerArray->AddLast(new AliMassFitControl(2.2,2.4, 2,2, 1.095,1.16)); //13        //16
95       controllerArray->AddLast(new AliMassFitControl(2.4,2.6, 2,2, 1.095,1.17)); //14       //17
96       controllerArray->AddLast(new AliMassFitControl(2.6,2.8, 2,2, 1.095,1.17)); //15        //18
97       controllerArray->AddLast(new AliMassFitControl(2.8,3.0, 2,2, 1.095,1.16)); //16        //19
98       controllerArray->AddLast(new AliMassFitControl(3.0,3.2, 2,2, 1.095,1.16)); //17
99       controllerArray->AddLast(new AliMassFitControl(3.2,3.4, 2,2, 1.095,1.17)); //18
100       controllerArray->AddLast(new AliMassFitControl(3.4,3.6, 2,2, 1.094,1.17)); //19
101       controllerArray->AddLast(new AliMassFitControl(3.6,3.8, 2,2, 1.095,1.17)); //20
102       controllerArray->AddLast(new AliMassFitControl(3.8,4.0, 2,2, 1.095,1.17)); //21
103       controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,2, 1.095,1.16)); //22
104       controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 1,2, 1.083,1.15)); //23
105             controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 1,2, 1.08,1.17)); //24  bin05
106        controllerArray->AddLast(new AliMassFitControl(5.5,6.5, 1,2, 1.083,1.17)); //25
107        // controllerArray->AddLast(new AliMassFitControl(6.5,8.0, 1,2, 1.095,1.17)); //33
108       //  controllerArray->AddLast(new AliMassFitControl(8.0,12.0, 1,2, 1.096,1.17));//34
109       
110
111     }
112     if(ihist == 1){
113       cout << "histogram : " <<1<<endl;
114       for(int i = 0; i<49; i++)
115         //     for(int i = 0; i<33; i++) //for 05 centrality
116         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
117         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 1.095,1.15));
118     }
119     if(ihist == 2){
120       cout << "histogram : " <<2<<endl;
121       for(int i = 0; i<49; i++)
122         //      for(int i = 0; i<33; i++) //for 05 centrality
123         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
124         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 1.095,1.17));
125     }
126     if(ihist == 3){
127       cout << "histogram : " <<3<<endl;
128       for(int i = 0; i<=40; i++)
129         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
130         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 1.095,1.17));
131     }
132     if(ihist == 4){
133       cout << "histogram : " <<4<<endl;
134       for(int i = 0; i<=40; i++)
135         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
136         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 1.095,1.17));
137     }
138     if(ihist == 5){
139       cout << "histogram : " <<5<<endl;
140       for(int i = 0; i<=33; i++)
141         //      if(i==11 || i==15 || i==16)
142         //        controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.57));
143         //        else
144         //controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.56));
145         controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 1.095,1.17));   //00
146     }
147     if(ihist == 6){
148       cout << "histogram : " <<6<<endl;
149       for(int i = 1; i<40; i++){
150         //   if(i==23) 
151         controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 1.095,1.17));
152         /*        if(  i==17 || i==18 || i==23) 
153                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.446,0.55));
154                   else
155                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.44,0.56));
156         */        }
157     }
158   }
159   /// ANTI LAMBDA ---->
160   else if (particleMode == 2){ // Anti-Lambdas
161     controllerArray->AddLast(new AliMassFitControl(0.6,0.7, 1,2, 1.098,1.142)); //5    //1
162        controllerArray->AddLast(new AliMassFitControl(0.7,0.8, 2,2, 1.1,1.143)); //6        //2
163        controllerArray->AddLast(new AliMassFitControl(0.8,0.9, 2,2, 1.091,1.143)); //7        //3
164        controllerArray->AddLast(new AliMassFitControl(0.9,1.0, 2,2, 1.091,1.143)); //1   //4
165       controllerArray->AddLast(new AliMassFitControl(1.0,1.1, 2,2, 1.091,1.14)); //2         //5
166       controllerArray->AddLast(new AliMassFitControl(1.1,1.2, 2,2, 1.095,1.14)); //3         //6
167       controllerArray->AddLast(new AliMassFitControl(1.2,1.3, 2,2, 1.097,1.143)); //4         //7
168       controllerArray->AddLast(new AliMassFitControl(1.3,1.4, 2,2, 1.099,1.14)); //5         //8
169       controllerArray->AddLast(new AliMassFitControl(1.4,1.5, 2,2, 1.095,1.15)); //6         //9
170       controllerArray->AddLast(new AliMassFitControl(1.5,1.6, 2,2, 1.095,1.14)); //7        //10
171       controllerArray->AddLast(new AliMassFitControl(1.6,1.7, 2,2, 1.095,1.152)); //8        //11
172       controllerArray->AddLast(new AliMassFitControl(1.7,1.8, 2,2, 1.096,1.15)); //9        //12
173       controllerArray->AddLast(new AliMassFitControl(1.8,1.9, 2,2, 1.098,1.143)); //10       //13
174       controllerArray->AddLast(new AliMassFitControl(1.9,2.0, 2,2, 1.098,1.143)); //11       //14
175       controllerArray->AddLast(new AliMassFitControl(2.0,2.2, 2,2, 1.098,1.15)); //12        //15
176       controllerArray->AddLast(new AliMassFitControl(2.2,2.4, 2,2, 1.095,1.16)); //13        //16
177       controllerArray->AddLast(new AliMassFitControl(2.4,2.6, 2,2, 1.095,1.175)); //14       //17
178       controllerArray->AddLast(new AliMassFitControl(2.6,2.8, 2,2, 1.095,1.17)); //15        //18
179       controllerArray->AddLast(new AliMassFitControl(2.8,3.0, 2,2, 1.095,1.175)); //16        //19
180       controllerArray->AddLast(new AliMassFitControl(3.0,3.2, 2,2, 1.095,1.17)); //17
181       controllerArray->AddLast(new AliMassFitControl(3.2,3.4, 2,2, 1.095,1.17)); //18
182       controllerArray->AddLast(new AliMassFitControl(3.4,3.6, 2,2, 1.095,1.17)); //19
183       controllerArray->AddLast(new AliMassFitControl(3.6,3.8, 2,2, 1.095,1.17)); //20
184       controllerArray->AddLast(new AliMassFitControl(3.8,4.0, 2,2, 1.095,1.17)); //21
185       controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,2, 1.095,1.16)); //22
186       controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 1,2, 1.083,1.16)); //23
187             controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 1,2, 1.08,1.17)); //24  bin05
188             controllerArray->AddLast(new AliMassFitControl(5.5,6.5, 1,2, 1.08,1.15)); //25
189        // controllerArray->AddLast(new AliMassFitControl(6.5,8.0, 1,2, 1.095,1.17)); //33
190       //  controllerArray->AddLast(new AliMassFitControl(8.0,12.0, 1,2, 1.096,1.17));//34
191
192   } // end if anti-Lambda
193   else if (particleMode == 0){ // K0s case
194     if(ihist == 0){
195            controllerArray->AddLast(new AliMassFitControl(0.2,0.3, 2,2, 0.44,0.55)); //1
196       controllerArray->AddLast(new AliMassFitControl(0.3,0.4, 2,2, 0.45,0.55)); //2
197      controllerArray->AddLast(new AliMassFitControl(0.4,0.5, 2,2, 0.45,0.6)); //3
198      controllerArray->AddLast(new AliMassFitControl(0.5,0.6, 2,2, 0.45,0.59)); //4
199      controllerArray->AddLast(new AliMassFitControl(0.6,0.7, 2,2, 0.45,0.55)); //5
200      controllerArray->AddLast(new AliMassFitControl(0.7,0.8, 2,2, 0.45,0.55)); //6
201       controllerArray->AddLast(new AliMassFitControl(0.8,0.9, 2,2, 0.45,0.55)); //7
202       controllerArray->AddLast(new AliMassFitControl(0.9,1.0, 2,2, 0.455,0.55)); //8
203       controllerArray->AddLast(new AliMassFitControl(1.0,1.1, 2,2, 0.455,0.55)); //9
204       controllerArray->AddLast(new AliMassFitControl(1.1,1.2, 2,2, 0.455,0.56)); //10
205       controllerArray->AddLast(new AliMassFitControl(1.2,1.3, 2,2, 0.455,0.55)); //11 
206       controllerArray->AddLast(new AliMassFitControl(1.3,1.4, 2,2, 0.455,0.55)); //12
207       controllerArray->AddLast(new AliMassFitControl(1.4,1.5, 2,2, 0.455,0.56)); //13
208       controllerArray->AddLast(new AliMassFitControl(1.5,1.6, 2,2, 0.455,0.55)); //14
209       controllerArray->AddLast(new AliMassFitControl(1.6,1.7, 2,2, 0.455,0.55)); //15
210       controllerArray->AddLast(new AliMassFitControl(1.7,1.8, 2,2, 0.453,0.55)); //16
211       controllerArray->AddLast(new AliMassFitControl(1.8,1.9, 2,2, 0.455,0.55)); //17
212       controllerArray->AddLast(new AliMassFitControl(1.9,2.0, 2,2, 0.455,0.55)); //18
213       controllerArray->AddLast(new AliMassFitControl(2.0,2.2, 2,2, 0.453,0.53)); //19
214       controllerArray->AddLast(new AliMassFitControl(2.2,2.4, 2,2, 0.455,0.55)); //20
215       controllerArray->AddLast(new AliMassFitControl(2.4,2.6, 2,2, 0.455,0.55)); //21
216       controllerArray->AddLast(new AliMassFitControl(2.6,2.8, 2,2, 0.455,0.54)); //22
217       controllerArray->AddLast(new AliMassFitControl(2.8,3.0, 2,2, 0.453,0.535)); //23
218       controllerArray->AddLast(new AliMassFitControl(3.0,3.2, 2,2, 0.443,0.54)); //24
219       controllerArray->AddLast(new AliMassFitControl(3.2,3.4, 2,2, 0.443,0.54)); //25
220       controllerArray->AddLast(new AliMassFitControl(3.4,3.6, 2,2, 0.44,0.56)); //26
221       controllerArray->AddLast(new AliMassFitControl(3.6,3.8, 2,2, 0.444,0.56)); //27
222       controllerArray->AddLast(new AliMassFitControl(3.8,4.0, 2,2, 0.44,0.56)); //28
223       controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,2, 0.44,0.56)); //29
224       controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 1,2, 0.44,0.56)); //30
225       controllerArray->AddLast(new AliMassFitControl(5.0,5.5, 1,2, 0.44,0.54)); //31
226       controllerArray->AddLast(new AliMassFitControl(5.5,6.5, 1,2, 0.44,0.54)); //32
227             controllerArray->AddLast(new AliMassFitControl(6.5,8.0, 1,2, 0.442,0.56)); //33
228       controllerArray->AddLast(new AliMassFitControl(8.0,12.0, 1,2, 0.43,0.58));//34
229       
230     }
231     if(ihist == 1){
232       cout << "histogram : " <<1<<endl;
233       //      for(int i = 0; i<49; i++)
234       // for(int i = 0; i<=20; i++) //for pt3
235              for(int i = 0; i<33; i++) //for 05 centrality
236         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
237         if(i==0)
238         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.443,0.54));
239         else
240         if(i>=25)
241         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.443,0.53));
242         else
243         if(i==24)
244         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.45,0.57));
245         
246         else
247         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.45,0.56));
248     }
249     if(ihist == 2){
250       cout << "histogram : " <<2<<endl;
251       //      for(int i = 0; i<=20; i++){ //for pt3
252         //      for(int i = 0; i<42; i++){
253       for(int i = 0; i<33; i++){ //for 05 centrality
254         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
255         if(i<=5)controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.445,0.55));
256         else
257         if(i>25)
258         controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 1,1, 0.444,0.56));
259         else
260           controllerArray->AddLast(new AliMassFitControl(minhist,0.1+i*0.2,0.1+(i+1.0)*0.2, 2,1, 0.445,0.56));
261       }
262     }
263     if(ihist == 3){
264       cout << "histogram : " <<3<<endl;
265       //for(int i = 0; i<=28; i++) //bin05
266       for(int i = 1; i<=20; i++) //for pt3
267         // for(int i = 0; i<=40; i++)
268         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
269         if(i==2 || i==4 || i==5)
270         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.442,0.535));
271         else if(i<2)
272         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.442,0.53));
273         else if(i>=3)
274         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.443,0.55));
275          
276         else
277         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.443,0.54));
278     }
279     if(ihist == 4){
280       cout << "histogram : " <<4<<endl;
281       for(int i = 0; i<=40; i++)
282         //      controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 2,1, 0.44,0.56));
283         if(i<4)controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.56));
284         else if (i >=4 && i<=6)
285         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.547));
286          else if (i==10 || i==11)
287         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.544));
288          else if (i==26)
289         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.443,0.544));
290          else if (i==29 || i == 34)
291         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.454,0.544));
292         else
293         controllerArray->AddLast(new AliMassFitControl(minhist,i,i+1.0, 1,1, 0.445,0.55));
294     }
295     if(ihist == 5){
296       cout << "histogram : " <<5<<endl;
297       for(int i = 0; i<25; i++) //for pt3
298         //      for(int i = 0; i<=32; i++)
299         //      if(i==11 || i==15 || i==16)
300         //        controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.57));
301         //        else
302         //controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.56));
303       if(i<=5) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.443,0.55));   //00
304       else
305       if(i>=6 && i<=9) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.44,0.55));   //00
306       else
307       if(i>=21) controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 1,1, 0.44,0.55));   //00
308       else
309         controllerArray->AddLast(new AliMassFitControl(minhist,0+i*0.03,(i+1)*0.03, 2,1, 0.43,0.56));
310
311     }
312     if(ihist == 6){
313       cout << "histogram : " <<6<<endl;
314             for(int i = 18; i<40; i++){ //for pt3
315       //  for(int i = 1; i<40; i++){
316         //   if(i==23) 
317                 if(  i==15 || i==0) 
318                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.444,0.56));
319                 else if(  i==10 || i==11) 
320                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.444,0.56));
321                 else if(  i==20 || i==21) 
322                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.56));
323                 else if (i<=22)
324                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.56));
325                 else if (i>22 && i<=24)
326                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.555));
327                 else if (i>24 && i<29)
328                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.44,0.53));
329                 else if (i>29)
330                   controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 1,1, 0.445,0.54));
331                                 else if( i>31 ) 
332                 controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.44,0.54));
333
334                 else
335                         controllerArray->AddLast(new AliMassFitControl(minhist,0.998 +i*0.00005,0.998 +(i+1)*0.00005, 2,1, 0.445,0.55));
336                          }
337     }
338   }  else if (particleMode == 4) { //Xi case
339     //controllerArray->AddLast(new AliMassFitControl(0.5,0.7, 1,1, 1.28,1.45)); //signal not visible with 
340     controllerArray->AddLast(new AliMassFitControl(0.7,0.9, 1,1, 1.285,1.45));
341     controllerArray->AddLast(new AliMassFitControl(0.9,1.1, 1,1, 1.285,1.45));
342     controllerArray->AddLast(new AliMassFitControl(1.1,1.3, 1,1, 1.27,1.45));
343     controllerArray->AddLast(new AliMassFitControl(1.3,1.5, 1,1, 1.27,1.45));
344     controllerArray->AddLast(new AliMassFitControl(1.5,1.7, 1,1, 1.27,1.45));
345     controllerArray->AddLast(new AliMassFitControl(1.7,2.0, 1,1, 1.27,1.45));
346     controllerArray->AddLast(new AliMassFitControl(2.0,2.5, 1,1, 1.27,1.44));
347     controllerArray->AddLast(new AliMassFitControl(2.5,3.0, 1,1, 1.27,1.45));
348     controllerArray->AddLast(new AliMassFitControl(3.0,3.5, 1,1, 1.27,1.44));
349     controllerArray->AddLast(new AliMassFitControl(3.5,4.0, 1,1, 1.27,1.45));
350     controllerArray->AddLast(new AliMassFitControl(4.0,4.5, 2,1, 1.27,1.44));
351     controllerArray->AddLast(new AliMassFitControl(4.5,5.0, 2,1, 1.27,1.45));
352   }
353   controllerArray->Sort();
354
355   // Make the proper label to pass in for use in labelling the diagnostics
356   // saved canvas files and histos
357   Char_t fulllabel[80];
358   //sprintf(fulllabel,"%s%s",title[MultBin].Data(),label);
359   sprintf(fulllabel,"%s",label);
360
361   //Slice up projection into mass histograms to extract yield
362   TH1F* hYield = (TH1F*)PtMassAna2(hParMass,particleMode,ihist,controllerArray->GetEntries(),controllerArray,fulllabel);
363
364
365   // CORRECTIONS Nev -comming from "FitSpectrum.C" (events with Zvertex < |10cm|) 
366   hYield->Scale(1.0/Nev); //Divide by the number of events
367
368   //hYield->Scale(Veff[MultBin]); //Multiply by the vertex efficiency effectively increaing number of events 
369   //(since Veff<1) therefore decreases yield
370   //hYield->Scale(1.0/BR);  //Divide by branching ratio (again increases yield since BR<1)
371   //hYield->Scale(1.0/(2*TMath::Pi())); // Always plot 1/2pi ...
372
373   Char_t yieldTitle[80];
374   //sprintf(yieldTitle,"Uncorrected %s yield: %s",part,title[MultBin].Data());
375   sprintf(yieldTitle,"Uncorrected %s yield",part);
376   hYield->SetTitle(yieldTitle);
377   if(ihist == 0)hYield->SetXTitle("p_{t} / [GeV/c]");
378   if(ihist == 1)hYield->SetXTitle("DCA / [cm]");
379   if(ihist == 2)hYield->SetXTitle("DCA / [cm]");
380   if(ihist == 3)hYield->SetXTitle("Radius / [cm]");
381   if(ihist == 4)hYield->SetXTitle("Decay Lenght / [cm]");
382   if(ihist == 5)hYield->SetXTitle("V0 Daughters / [cm]");
383   if(ihist == 6)hYield->SetXTitle("Cos of pointing angle");
384   hYield->SetYTitle("1/Nev.dN/dp_{t}");
385
386   // Create plots
387
388   Char_t fileNameBase[80];
389   if(ihist == 0)sprintf(fileNameBase,"Masses%s",part);
390   else sprintf(fileNameBase,"Masses%s",label);
391   Char_t fileNamePng[80];
392   sprintf(fileNamePng,"%s.png",fileNameBase);
393   Char_t fileNameEps[80];
394   sprintf(fileNameEps,"%s.eps",fileNameBase);
395   Char_t fileNamePdf[80];
396   sprintf(fileNamePdf,"%s.pdf",fileNameBase);
397
398   c1->SaveAs(fileNamePng);
399   c1->SaveAs(fileNameEps);
400   c1->SaveAs(fileNamePdf);
401
402   //c1->Clear();
403
404   //c1->SetLogy();
405   TCanvas *cYield = new TCanvas("Yield","Corrected Yield",600,400);
406   cYield->cd();
407   //cYield->SetLogy();
408   hYield->SetStats(kFALSE);
409   hYield->Draw();
410   // cYield->SetLogy();
411   cYield->Update();
412
413   //  hRC_MB->SetMarkerStyle(20);
414   //  hRC_MB->SetMarkerColor(4);
415   //  hRC_MB->Scale(NBinMB/NBin3);
416   Char_t fnametext[80];
417   if(ihist == 0)sprintf(fnametext,"Yield%s",part);
418   else sprintf(fnametext,"Yield%s",label);
419   Char_t fnamePng[80];
420   sprintf(fnamePng,"%s.png",fnametext);
421   c1->SaveAs(fnamePng);
422   Char_t fnameEps[80];
423   sprintf(fnameEps,"%s.eps",fnametext);
424   c1->SaveAs(fnameEps);
425
426   // This section for yield scaled by number of binary collisions.
427   // Could add array of values and do scaling according to 'MultBin' index
428   TH1F* hScYield = hYield->Clone("ScYield");
429   Char_t scYieldTitle[80];
430   //sprintf(scYieldTitle,"<N_{bin}> Scaled %s",hYield->GetTitle());
431   //hScYield->SetTitle(scYieldTitle);
432   //SCALING for scaled yield only  divide by mean Nbin (scaled yield is therefore smaller)
433   //hScYield->Scale(1/NBin[MultBin]);
434
435   Char_t fnameRoot[80];
436   sprintf(fnameRoot,"%s.root",fnametext);
437   TFile *YieldFile = new TFile(fnameRoot,"RECREATE");
438   hYield->Write();
439   hScYield->Write();
440   YieldFile->Close();
441
442   controllerArray->Delete();
443 }