]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliHFSystErr.cxx
30273f556ff5bf5c5d8f657b7d190e0ac17d6c96
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliHFSystErr.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 /////////////////////////////////////////////////////////////
19 //
20 // Class to handle systematic errors for charm hadrons
21 //
22 // Usage:
23 // AliHFSystEff syst;           // DECAY = 1 for D0, 2, for D+, 3 for D* 
24 // syst.SetRunNumber(YEAR);     // YEAR = two last numbers of the year (is 10 for 2010)
25 // syst.SetCollisionType(TYPE);  // TYPE =  0 is pp, 1 is PbPb
26 // syst.SetCentrality(CENT);     // CENT is centrality, 0100 for MB, 020 (4080) for 0-20 (40-80) CC...
27 // syst.Init(DECAY);             // DECAY = 1 for D0, 2, for D+, 3 for D* 
28 // syst.DrawErrors(); // to see a plot of the error contributions
29 // syst.GetTotalSystErr(pt); // to get the total err at pt 
30 //
31 // Author: A.Dainese, andrea.dainese@pd.infn.it
32 /////////////////////////////////////////////////////////////
33
34 #include <TStyle.h>
35 #include <TGraphAsymmErrors.h>
36 #include <TMath.h>
37 #include <TCanvas.h>
38 #include <TH2F.h>
39 #include <TLegend.h>
40 #include <TColor.h>
41
42 #include "AliLog.h"
43 #include "AliHFSystErr.h"
44
45
46 ClassImp(AliHFSystErr)
47
48 //--------------------------------------------------------------------------
49 AliHFSystErr::AliHFSystErr(const Char_t* name, const Char_t* title) : 
50 TNamed(name,title),
51 fNorm(0),
52 fRawYield(0),
53 fTrackingEff(0),
54 fBR(0),
55 fCutsEff(0),
56 fPIDEff(0),
57 fMCPtShape(0),
58 fPartAntipart(0),
59 fRunNumber(10),
60 fCollisionType(0),
61 fCentralityClass("0100"),
62 fIsLowEnergy(false),
63 fIsCentScan(false)
64 {
65   //
66   // Default Constructor
67   //
68 }
69
70 //--------------------------------------------------------------------------
71 AliHFSystErr::~AliHFSystErr() {
72   //  
73   // Default Destructor
74   //
75   /*
76
77   if(fNorm)         { delete fNorm; fNorm=0; }
78   if(fRawYield)     { delete fRawYield; fRawYield=0; }
79   if(fTrackingEff)  { delete fTrackingEff; fTrackingEff=0; }
80   if(fBR)           { delete fBR; fBR=0; }
81   if(fCutsEff)      { delete fCutsEff; fCutsEff=0; }
82   if(fPIDEff)       { delete fPIDEff; fPIDEff=0; }
83   if(fMCPtShape)    { delete fMCPtShape; fMCPtShape=0; }
84   if(fPartAntipart) { delete fPartAntipart; fPartAntipart=0; }
85   */
86 }
87
88 //--------------------------------------------------------------------------
89 void AliHFSystErr::Init(Int_t decay){
90   //
91   // Variables/histos initialization
92   //
93
94   if (fRunNumber!=10 && fIsLowEnergy==false) { 
95     AliFatal("Only settings for 2010 and the low energy runs are implemented so far");
96   }
97
98   switch(decay) {
99   case 1: // D0->Kpi
100     if (fCollisionType==0) {
101       if (fIsLowEnergy) InitD0toKpi2010ppLowEn();
102       else InitD0toKpi2010pp();
103     } else if (fCollisionType==1) {
104       if (fCentralityClass=="07half") InitD0toKpi2011PbPb07half();
105       else if (fCentralityClass=="010") InitD0toKpi2010PbPb010CentScan();
106       else if (fCentralityClass=="1020") InitD0toKpi2010PbPb1020CentScan();
107       else if (fCentralityClass=="020") InitD0toKpi2010PbPb020();
108       else if (fCentralityClass=="2040") InitD0toKpi2010PbPb2040CentScan();
109       else if (fCentralityClass=="4060") InitD0toKpi2010PbPb4060CentScan();
110       else if (fCentralityClass=="6080") InitD0toKpi2010PbPb6080CentScan();
111       else if (fCentralityClass=="4080") InitD0toKpi2010PbPb4080();
112       else AliFatal("Not yet implemented");
113     }
114     //    else if (fCollisionType==2) InitD0toKpi2010ppLowEn();
115     break;
116   case 2: // D+->Kpipi
117     if (fCollisionType==0) {
118       if (fIsLowEnergy) InitDplustoKpipi2010ppLowEn();
119       else InitDplustoKpipi2010pp();
120     } else if (fCollisionType==1) {
121       if (fCentralityClass=="010") InitDplustoKpipi2010PbPb010CentScan();
122       else if (fCentralityClass=="1020") InitDplustoKpipi2010PbPb1020CentScan();
123       else if (fCentralityClass=="020") InitDplustoKpipi2010PbPb020();
124       else if (fCentralityClass=="2040") InitDplustoKpipi2010PbPb2040CentScan();
125       else if (fCentralityClass=="4060") InitDplustoKpipi2010PbPb4060CentScan();
126       else if (fCentralityClass=="6080") InitDplustoKpipi2010PbPb6080CentScan();
127       else if (fCentralityClass=="4080") InitDplustoKpipi2010PbPb4080();
128       else AliFatal("Not yet implemented");
129     }
130     break;
131   case 3: // D*->D0pi
132     if (fCollisionType==0) {
133       if(fIsLowEnergy)  InitDstartoD0pi2010ppLowEn();
134       else InitDstartoD0pi2010pp();
135     }else if (fCollisionType==1) {
136       if (fCentralityClass=="010") InitDstartoD0pi2010PbPb010CentScan();
137       else if (fCentralityClass=="07half") InitDstartoD0pi2011PbPb07half();
138       else if (fCentralityClass=="1020") InitDstartoD0pi2010PbPb1020CentScan();
139       else if (fCentralityClass=="020") InitDstartoD0pi2010PbPb020();
140       else if (fCentralityClass=="2040" && fIsCentScan) InitDstartoD0pi2010PbPb2040CentScan();
141       else if (fCentralityClass=="2040") InitDstartoD0pi2010PbPb2040();
142       else if (fCentralityClass=="4060") InitDstartoD0pi2010PbPb4060CentScan();
143       else if (fCentralityClass=="6080") InitDstartoD0pi2010PbPb6080CentScan();
144       else if (fCentralityClass=="4080") InitDstartoD0pi2010PbPb4080();
145       else AliFatal("Not yet implemented");
146     }
147     break;
148   case 4: // D+s->KKpi
149     if (fCollisionType==0) InitDstoKKpi2010pp();
150     else AliFatal("Not yet implemented");
151     break;
152     
153   default:
154     printf("Invalid decay type: %d\n",decay);
155     break;
156   }
157
158 }
159   
160 //--------------------------------------------------------------------------
161 void AliHFSystErr::InitD0toKpi2010pp() {
162   // 
163   // D0->Kpi syst errors. Responsible: A. Rossi
164   //   2010 pp sample
165   //
166
167   // Normalization
168   fNorm = new TH1F("fNorm","fNorm",24,0,24);
169   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.035); // 4% error on sigmaV0and
170
171   // Branching ratio 
172   fBR = new TH1F("fBR","fBR",24,0,24);
173   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
174
175   // Tracking efficiency
176   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);
177   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.08); // 8% (4% per track)
178
179   // Raw yield extraction
180   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
181   fRawYield->SetBinContent(1,1);
182   fRawYield->SetBinContent(2,0.22);
183   fRawYield->SetBinContent(3,0.1);
184   for(Int_t i=4;i<=7;i++) fRawYield->SetBinContent(i,0.04);
185   for(Int_t i=8;i<=12;i++) fRawYield->SetBinContent(i,0.07);
186   for(Int_t i=13;i<=16;i++) fRawYield->SetBinContent(i,0.10);
187   for(Int_t i=17;i<=24;i++) fRawYield->SetBinContent(i,1);
188
189   // Cuts efficiency (from cuts variation)
190   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
191   for(Int_t i=1;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
192
193   // PID efficiency (from PID/noPID)
194   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
195   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.03); // 3%
196   fPIDEff->SetBinContent(2,0.05); // 5%
197
198   // MC dN/dpt
199   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
200   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0);
201   fMCPtShape->SetBinContent(1,0.03);
202   fMCPtShape->SetBinContent(2,0.03);
203
204   // particle-antiparticle
205   //  fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",24,0,24);
206   //  fPartAntipart->SetBinContent(1,1); 
207   //  for(Int_t i=2;i<=24;i++) fPartAntipart->SetBinContent(i,0.05);
208   
209   return;
210 }
211 //--------------------------------------------------------------------------
212 void AliHFSystErr::InitD0toKpi2010PbPb020() {
213   // 
214   // D0->Kpi syst errors. Responsible: A. Rossi
215   //   2010 PbPb sample, 0-20 CC
216   //
217
218   // Normalization
219   fNorm = new TH1F("fNorm","fNorm",20,0,20);
220   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.05); // TAA and pp norm
221
222   // Branching ratio 
223   fBR = new TH1F("fBR","fBR",20,0,20);
224   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
225
226   // Tracking efficiency
227   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
228   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.10);// Jacek, 5% per track
229
230   // Raw yield extraction
231   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
232   fRawYield->SetBinContent(1,0);
233   fRawYield->SetBinContent(2,0);
234   fRawYield->SetBinContent(3,0.08);
235   for(Int_t i=4;i<=12;i++) fRawYield->SetBinContent(i,0.06);
236   for(Int_t i=13;i<=16;i++) fRawYield->SetBinContent(i,0.10);
237
238   // Cuts efficiency (from cuts variation)
239   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
240   fCutsEff->SetBinContent(1,0.);
241   fCutsEff->SetBinContent(2,0.);
242   fCutsEff->SetBinContent(3,0.13);
243   fCutsEff->SetBinContent(4,0.11);  
244   for(Int_t i=5;i<=16;i++) fCutsEff->SetBinContent(i,0.10);
245   for(Int_t i=17;i<=20;i++) fCutsEff->SetBinContent(i,0.);
246
247   // PID efficiency (from PID/noPID)
248   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
249   for(Int_t i=3;i<=16;i++) fPIDEff->SetBinContent(i,0.05);
250
251   // MC dN/dpt
252   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
253   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.01);
254   fMCPtShape->SetBinContent(3,0.04);
255   fMCPtShape->SetBinContent(4,0.02);
256   for(Int_t i=13;i<=16;i++) fMCPtShape->SetBinContent(i,0.03); 
257
258 //   // particle-antiparticle
259 //   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
260 //   for(Int_t i=3;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);
261 //   fPartAntipart->SetBinContent(3,0.10);
262 //   fPartAntipart->SetBinContent(4,0.10);
263 //   fPartAntipart->SetBinContent(7,0.10);
264 //   fPartAntipart->SetBinContent(8,0.10);
265   
266   return;
267 }
268 //--------------------------------------------------------------------------
269 //--------------------------------------------------------------------------
270 void AliHFSystErr::InitD0toKpi2011PbPb07half() {
271   // 
272   // D0->Kpi syst errors. Responsible: A. Rossi
273   //   2011 PbPb sample, 0-7.5 CC
274   //
275
276   // Normalization
277   fNorm = new TH1F("fNorm","fNorm",36,0,36);
278   for(Int_t i=1;i<36;i++) fNorm->SetBinContent(i,0.05); // TAA and pp norm
279
280   // Branching ratio 
281   fBR = new TH1F("fBR","fBR",36,0,36);
282   for(Int_t i=1;i<=36;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
283
284   // Tracking efficiency
285   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",36,0,36);
286   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.10);// Jacek, 5% per track
287   for(Int_t i=25;i<=36;i++) fTrackingEff->SetBinContent(i,0.);// OUT OF MEASUREMENT RANGE
288
289   // Raw yield extraction
290   fRawYield = new TH1F("fRawYield","fRawYield",36,0,36);
291   fRawYield->SetBinContent(1,0);
292   fRawYield->SetBinContent(2,0.1);
293   fRawYield->SetBinContent(3,0.05);
294   for(Int_t i=4;i<=16;i++) fRawYield->SetBinContent(i,0.05);
295   for(Int_t i=17;i<=24;i++) fRawYield->SetBinContent(i,0.30);
296   for(Int_t i=25;i<=36;i++) fRawYield->SetBinContent(i,0.);// OUT OF MEASUREMENT RANGE
297
298   // Cuts efficiency (from cuts variation)
299   fCutsEff = new TH1F("fCutsEff","fCutsEff",36,0,36);
300   fCutsEff->SetBinContent(1,0.);
301   fCutsEff->SetBinContent(2,0.15);
302   fCutsEff->SetBinContent(3,0.13);
303   fCutsEff->SetBinContent(4,0.11);  
304   fCutsEff->SetBinContent(5,0.08); 
305   for(Int_t i=6;i<=24;i++) fCutsEff->SetBinContent(i,0.06);
306   for(Int_t i=25;i<=36;i++) fCutsEff->SetBinContent(i,0.0);// OUT OF MEASUREMENT RANGE
307
308   // PID efficiency (from PID/noPID)
309   fPIDEff = new TH1F("fPIDEff","fPIDEff",36,0,36);
310   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.05);
311   for(Int_t i=25;i<=36;i++) fPIDEff->SetBinContent(i,0.0);// OUT OF MEASUREMENT RANGE
312
313   // MC dN/dpt
314   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",36,0,36);
315   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0.01);
316   fMCPtShape->SetBinContent(2,0.06);
317   fMCPtShape->SetBinContent(3,0.04);
318   fMCPtShape->SetBinContent(4,0.02);
319   for(Int_t i=13;i<=16;i++) fMCPtShape->SetBinContent(i,0.03); 
320   for(Int_t i=17;i<=24;i++) fMCPtShape->SetBinContent(i,0.05);
321   for(Int_t i=25;i<=36;i++) fMCPtShape->SetBinContent(i,0.0);// OUT OF MEASUREMENT RANGE
322
323 //   // particle-antiparticle
324 //   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",36,0,36);
325 //   for(Int_t i=3;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);
326 //   fPartAntipart->SetBinContent(3,0.10);
327 //   fPartAntipart->SetBinContent(4,0.10);
328 //   fPartAntipart->SetBinContent(7,0.10);
329 //   fPartAntipart->SetBinContent(8,0.10);
330   
331   return;
332 }
333 //--------------------------------------------------------------------------
334 void AliHFSystErr::InitD0toKpi2010PbPb4080() {
335   // 
336   // D0->Kpi syst errors. Responsible: A. Rossi
337   //   2010 PbPb sample, 40-80 CC
338   //
339
340   // Normalization
341   fNorm = new TH1F("fNorm","fNorm",20,0,20);
342   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.07); // TAA and pp norm
343
344   // Branching ratio 
345   fBR = new TH1F("fBR","fBR",20,0,20);
346   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
347
348   // Tracking efficiency
349   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
350   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.10); // Jacek, 5% per track
351
352
353   // Raw yield extraction
354   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
355   fRawYield->SetBinContent(1,0);
356   fRawYield->SetBinContent(2,0);
357   for(Int_t i=3;i<=16;i++) fRawYield->SetBinContent(i,0.05);
358   //for(Int_t i=13;i<=20;i++) fRawYield->SetBinContent(i,0);
359
360   // Cuts efficiency (from cuts variation)
361   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
362   fCutsEff->SetBinContent(1,0.);
363   fCutsEff->SetBinContent(2,0.);
364   fCutsEff->SetBinContent(3,0.13);
365   fCutsEff->SetBinContent(4,0.11);  
366   for(Int_t i=5;i<=16;i++) fCutsEff->SetBinContent(i,0.10);
367   for(Int_t i=17;i<=20;i++) fCutsEff->SetBinContent(i,0.);
368
369   // PID efficiency (from PID/noPID)
370   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
371 //   for(Int_t i=3;i<=6;i++) fPIDEff->SetBinContent(i,0.10);
372 //   for(Int_t i=7;i<=16;i++) fPIDEff->SetBinContent(i,0.05);
373   for(Int_t i=3;i<=16;i++) fPIDEff->SetBinContent(i,0.05);
374
375   // MC dN/dpt
376   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
377   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.01);
378   //  fMCPtShape->SetBinContent(3,0.04); Not set for peripherals (Raa Vs pt is flat)
379   //  fMCPtShape->SetBinContent(4,0.02);
380   for(Int_t i=13;i<=16;i++) fMCPtShape->SetBinContent(i,0.03); 
381   
382   //   // particle-antiparticle
383   //   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
384   //   for(Int_t i=3;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);
385   
386   return;
387 }
388
389 //--------------------------------------------------------------------------
390 void AliHFSystErr::InitD0toKpi2010ppLowEn() {
391   // 
392   // D0->Kpi syst errors. Low energy run
393   //   2011 2.76 TeV pp sample
394   //
395   AliInfo(" Settings for D0 --> K pi, p-p collisions at 2.76 TeV"); 
396
397   // Normalization
398   fNorm = new TH1F("fNorm","fNorm",20,0,20);
399   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.031); // 4% error on sigmaV0and
400
401   // Branching ratio 
402   fBR = new TH1F("fBR","fBR",20,0,20);
403   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
404
405   // Tracking efficiency
406   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
407   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.10); //10% (5% per track)
408
409   // Raw yield extraction
410   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
411   fRawYield->SetBinContent(1,1);
412   for(Int_t i=1;i<=20;i++) fRawYield->SetBinContent(i,0.15);
413
414   // Cuts efficiency (from cuts variation)
415   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
416   for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10% 
417   fCutsEff->SetBinContent(2,0.20);
418   for(Int_t i=7;i<=20;i++) fCutsEff->SetBinContent(i,0.15); // 10% 
419
420
421   // PID efficiency (from PID/noPID)
422   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
423   for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.15); // 10%
424   //  fPIDEff->SetBinContent(2,0.20);
425   for(Int_t i=7;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 10%
426
427   // MC dN/dpt
428   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
429   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.01);
430   fMCPtShape->SetBinContent(1,0.03);
431   fMCPtShape->SetBinContent(2,0.03);
432
433 //   // particle-antiparticle
434 //   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
435 //   fPartAntipart->SetBinContent(1,1);
436 //   fPartAntipart->SetBinContent(2,1);
437 //   for(Int_t i=3;i<=6;i++) fPartAntipart->SetBinContent(i,0.08);
438 //   for(Int_t i=1;i<=20;i++) fPartAntipart->SetBinContent(i,0.);
439   
440   return;
441 }
442
443 //--------------------------------------------------------------------------
444 void AliHFSystErr::InitDplustoKpipi2010pp() {
445   // 
446   // D+->Kpipi syst errors. Responsible: R. Bala
447   //  2010 pp sample
448   //
449
450
451 // Normalization
452   fNorm = new TH1F("fNorm","fNorm",24,0,24);
453   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.035); // 4% error on sigmaV0and
454
455   // Branching ratio 
456   fBR = new TH1F("fBR","fBR",24,0,24);
457   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.021); // 2.1% PDG2010
458
459   // Tracking efficiency
460   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);
461   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.12); // 12% (4% per track)
462
463
464   // Raw yield extraction
465   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
466   fRawYield->SetBinContent(1,1);
467   fRawYield->SetBinContent(2,0.25);
468   fRawYield->SetBinContent(3,0.25);
469   fRawYield->SetBinContent(4,0.20);
470   fRawYield->SetBinContent(5,0.09);
471   fRawYield->SetBinContent(6,0.09);
472   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05);  
473   for(Int_t i=12;i<=24;i++) fRawYield->SetBinContent(i,0.10);  
474   
475   // Cuts efficiency (from cuts variation)
476   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
477   for(Int_t i=1;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
478
479   // PID efficiency (from PID/noPID)
480   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
481   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.05); // 5%
482   fPIDEff->SetBinContent(1,0.15); // 15%
483   fPIDEff->SetBinContent(2,0.15); // 15%
484   fPIDEff->SetBinContent(3,0.15); // 15%
485   fPIDEff->SetBinContent(4,0.15); // 15%
486   for(Int_t i=12;i<=16;i++) fPIDEff->SetBinContent(i,0.10); // 5%
487
488   // MC dN/dpt  
489   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
490   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0);
491   fMCPtShape->SetBinContent(1,0.03);
492   fMCPtShape->SetBinContent(2,0.03);
493
494
495   // particle-antiparticle
496   /*
497   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
498   fPartAntipart->SetBinContent(1,1);
499   fPartAntipart->SetBinContent(2,1);
500   fPartAntipart->SetBinContent(3,0.12);
501   for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05);   //5 to 12%
502   */
503   return;
504 }
505  
506 //--------------------------------------------------------------------------
507 void AliHFSystErr::InitDstoKKpi2010pp() {
508   // 
509   // D+s->KKpi syst errors. Responsible: G.M. Innocenti
510   //  2010 pp sample
511   //
512
513
514 // Normalization
515   fNorm = new TH1F("fNorm","fNorm",12,0,12);
516   for(Int_t i=1;i<=12;i++) fNorm->SetBinContent(i,0.035); // 3.5% error on sigmaV0and
517
518   // Branching ratio 
519   fBR = new TH1F("fBR","fBR",12,0,12);
520   for(Int_t i=1;i<=12;i++) fBR->SetBinContent(i,0.06); // 0.14/2.32 PDG2010
521
522   // Tracking efficiency
523   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",12,0,12);
524   for(Int_t i=1;i<=12;i++) fTrackingEff->SetBinContent(i,0.12); // 12% (4% per track)
525
526
527   // Raw yield extraction
528   fRawYield = new TH1F("fRawYield","fRawYield",12,0,12);
529   fRawYield->SetBinContent(1,1);
530   fRawYield->SetBinContent(2,1);
531   fRawYield->SetBinContent(3,0.20);
532   fRawYield->SetBinContent(4,0.20);
533   fRawYield->SetBinContent(5,0.15);
534   fRawYield->SetBinContent(6,0.15);
535   fRawYield->SetBinContent(7,0.15);
536   fRawYield->SetBinContent(8,0.15);
537   fRawYield->SetBinContent(9,0.20);
538   fRawYield->SetBinContent(10,0.20);
539   fRawYield->SetBinContent(11,0.20);
540   fRawYield->SetBinContent(12,0.20);
541   
542   // Cuts efficiency (from cuts variation)
543   fCutsEff = new TH1F("fCutsEff","fCutsEff",12,0,12);
544   for(Int_t i=1;i<=12;i++) fCutsEff->SetBinContent(i,0.15); // 15%
545
546   // PID efficiency (from PID/noPID)
547   fPIDEff = new TH1F("fPIDEff","fPIDEff",12,0,12);
548   for(Int_t i=1;i<=12;i++) fPIDEff->SetBinContent(i,0.07); // 7%
549
550   // MC dN/dpt 
551   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",12,0,12);
552   for(Int_t i=1; i<=2; i++) fMCPtShape->SetBinContent(i,1.);
553   for(Int_t i=3; i<=4; i++) fMCPtShape->SetBinContent(i,0.03);
554   for(Int_t i=5; i<=6; i++) fMCPtShape->SetBinContent(i,0.03);
555   for(Int_t i=7; i<=8; i++) fMCPtShape->SetBinContent(i,0.02);
556   for(Int_t i=9; i<=12; i++) fMCPtShape->SetBinContent(i,0.02);
557
558
559   // particle-antiparticle
560   /*
561   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",12,0,12);
562   fPartAntipart->SetBinContent(1,1);
563   fPartAntipart->SetBinContent(2,1);
564   fPartAntipart->SetBinContent(3,0.12);
565   for(Int_t i=4;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);   //5 to 12%
566   */
567   return;
568 }
569    
570  
571 //--------------------------------------------------------------------------
572 void AliHFSystErr::InitDplustoKpipi2010PbPb020() {
573   // 
574   // D+->Kpipi syst errors. Responsible: ??
575   //  2010 PbPb sample, 0-20 CC
576   //
577
578  // Normalization
579   fNorm = new TH1F("fNorm","fNorm",20,0,20);
580   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.05); // TAA and pp norm
581
582   // Branching ratio 
583   fBR = new TH1F("fBR","fBR",20,0,20);
584   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.021); // 2.1% PDG2010
585
586   // Tracking efficiency
587   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
588   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
589
590   // Raw yield extraction
591   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
592   for(Int_t i=1;i<=20;i++) fRawYield->SetBinContent(i,.10);  //5 to 10%
593   // fRawYield->SetBinContent(5,0.23);
594   //fRawYield->SetBinContent(6,0.23);
595   fRawYield->SetBinContent(7,0.20);
596   fRawYield->SetBinContent(8,0.20);
597   fRawYield->SetBinContent(9,0.15);
598   fRawYield->SetBinContent(10,0.15);
599   fRawYield->SetBinContent(11,0.15);
600   fRawYield->SetBinContent(12,0.15);
601
602   // Cuts efficiency (from cuts variation)
603   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
604   for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.15); // 10%
605
606   // PID efficiency (from PID/noPID)
607   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
608   for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
609
610   // MC dN/dpt  (2/2/2012)
611   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
612   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.);
613   for(Int_t iBin=7; iBin<=8; iBin++) fMCPtShape->SetBinContent(iBin,0.01);
614   for(Int_t iBin=9; iBin<=12; iBin++) fMCPtShape->SetBinContent(iBin,0.05);
615   for(Int_t iBin=13; iBin<=16; iBin++) fMCPtShape->SetBinContent(iBin,0.05);
616
617
618   // particle-antiparticle
619   /*
620   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
621   fPartAntipart->SetBinContent(1,1);
622   fPartAntipart->SetBinContent(2,1);
623   fPartAntipart->SetBinContent(3,0.12);
624   for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05);   //5 to 12%
625   */
626
627   return;
628 }
629
630 //--------------------------------------------------------------------------
631 void AliHFSystErr::InitDplustoKpipi2010PbPb4080() {
632   // 
633   // D+->Kpipi syst errors. Responsible: ??
634   //  2010 PbPb sample, 40-80 CC
635   //
636   
637
638  // Normalization
639   fNorm = new TH1F("fNorm","fNorm",20,0,20);
640   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.07); // TAA and pp norm
641
642   // Branching ratio 
643   fBR = new TH1F("fBR","fBR",20,0,20);
644   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.021); // 2.1% 
645
646   // Tracking efficiency
647   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
648   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
649
650
651   // Raw yield extraction
652   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
653   fRawYield->SetBinContent(1,1);
654   fRawYield->SetBinContent(2,1);
655   fRawYield->SetBinContent(3,1);
656   fRawYield->SetBinContent(4,0.15);
657   fRawYield->SetBinContent(5,0.05);
658   fRawYield->SetBinContent(6,0.05);
659   fRawYield->SetBinContent(7,0.15);
660   fRawYield->SetBinContent(8,0.15);
661   for(Int_t i=9;i<=12;i++) fRawYield->SetBinContent(i,0.15);
662   for(Int_t i=13;i<=20;i++) fRawYield->SetBinContent(i,1);  //5 to 10%
663
664   // Cuts efficiency (from cuts variation)
665   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
666   for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10%
667
668   // PID efficiency (from PID/noPID)
669   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
670   for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
671   fPIDEff->SetBinContent(3,0.13); // 13%
672  
673
674   // MC dN/dpt  (2/2/2012)
675   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
676   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0);
677   for(Int_t iBin=4; iBin<=8; iBin++) fMCPtShape->SetBinContent(iBin,0.01);
678   for(Int_t iBin=9; iBin<=12; iBin++) fMCPtShape->SetBinContent(iBin,0.03);
679   for(Int_t iBin=13; iBin<=16; iBin++) fMCPtShape->SetBinContent(iBin,0.03);
680
681
682   // particle-antiparticle
683   /*
684   fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
685   fPartAntipart->SetBinContent(1,1);
686   fPartAntipart->SetBinContent(2,1);
687   fPartAntipart->SetBinContent(3,0.12);
688   for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05);   //5 to 12%
689   */
690   return;
691 }
692
693 //--------------------------------------------------------------------------
694 void AliHFSystErr::InitDplustoKpipi2010ppLowEn() {
695
696   // 
697   // D+->Kpipi syst errors. Responsible: R. Bala
698   //  2011 2.76 TeV pp sample
699   //
700   AliInfo(" Settings for D+ --> K pi pi p-p collisions at 2.76 TeV"); 
701
702   // Normalization
703   fNorm = new TH1F("fNorm","fNorm",20,0,20);
704   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.031); // 10% error on sigmaV0and
705
706   // Branching ratio 
707   fBR = new TH1F("fBR","fBR",20,0,20);
708   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.021); // 2.1% PDG2010
709
710   // Tracking efficiency
711   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
712   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.15); // 3% (1% per track)
713
714   // Raw yield extraction
715   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
716   fRawYield->SetBinContent(1,1);
717   fRawYield->SetBinContent(2,1);
718   for(Int_t i=3;i<=6;i++) fRawYield->SetBinContent(i,0.10);  //5 to 10%
719   fRawYield->SetBinContent(7,0.15);
720   fRawYield->SetBinContent(8,0.15); 
721   for(Int_t i=9;i<=20;i++) fRawYield->SetBinContent(i,0.055);  //5 to 10%
722
723   // Cuts efficiency (from cuts variation)
724   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
725   for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.15); // 10%
726
727   // PID efficiency (from PID/noPID)
728   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
729   for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
730   fPIDEff->SetBinContent(3,0.10); // 13%
731   fPIDEff->SetBinContent(4,0.10); // 13%
732  
733   // MC dN/dpt  (copied from D0 : will update later)
734   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
735   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.01);
736   fMCPtShape->SetBinContent(1,0.03);
737   fMCPtShape->SetBinContent(2,0.03);
738
739   return;
740 }
741
742 //--------------------------------------------------------------------------
743 void AliHFSystErr::InitDstartoD0pi2010pp() {
744   // 
745   // D*+->D0pi syst errors. Responsible: A. Grelli, Y. Wang
746   //  2010 pp sample
747   //
748
749  // Normalization
750   fNorm = new TH1F("fNorm","fNorm",24,0,24);
751   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.035); // 4% error on sigmaV0and
752
753   // Branching ratio 
754   fBR = new TH1F("fBR","fBR",24,0,24);
755   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
756
757   // Tracking efficiency
758   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);
759   fTrackingEff->SetBinContent(1,1.0);
760   fTrackingEff->SetBinContent(2,0.13); // 10% (ITSsa) \oplus 8% (4% per ITSTPC track)
761   fTrackingEff->SetBinContent(3,0.12);
762   fTrackingEff->SetBinContent(3,0.12);
763   for(Int_t i=4;i<=24;i++) fTrackingEff->SetBinContent(i,0.12); // 12% (4% per track)
764
765
766   // Raw yield extraction
767   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
768   fRawYield->SetBinContent(1,1.0);
769   fRawYield->SetBinContent(2,0.10);
770   fRawYield->SetBinContent(3,0.04);
771   fRawYield->SetBinContent(4,0.03);
772   fRawYield->SetBinContent(5,0.03);
773   fRawYield->SetBinContent(6,0.05);
774   fRawYield->SetBinContent(7,0.05);
775   fRawYield->SetBinContent(8,0.05);
776   for(Int_t i=9;i<=12;i++) fRawYield->SetBinContent(i,0.04);  //4%
777   for(Int_t i=13;i<=16;i++) fRawYield->SetBinContent(i,0.09);  //4%
778   for(Int_t i=17;i<=24;i++) fRawYield->SetBinContent(i,0.2);  //4%
779
780   // Cuts efficiency (from cuts variation)
781   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
782   fCutsEff->SetBinContent(2,0.22);
783   for(Int_t i=3;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
784
785   // PID efficiency (from PID/noPID)
786   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
787   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.04); // 3%
788  
789
790   // MC dN/dpt  (copied from D0 : will update later)
791   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
792   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0);
793   fMCPtShape->SetBinContent(1,0.03);
794   fMCPtShape->SetBinContent(2,0.03);
795
796   return;
797
798
799 }
800 //--------------------------------------------------------------------------
801 void AliHFSystErr::InitDstartoD0pi2010ppLowEn() {
802
803   // 
804   // D+->Kpipi syst errors. Responsible: A. Grelli
805   //  2011 2.76 TeV pp sample
806   //
807   AliInfo(" Settings for D*+ --> D0 pi p-p collisions at 2.76 TeV"); 
808
809 // Normalization
810   fNorm = new TH1F("fNorm","fNorm",20,0,20);
811   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.031); // 10% error on sigmaV0and
812
813   // Branching ratio 
814   fBR = new TH1F("fBR","fBR",20,0,20);
815   for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
816
817   // Tracking efficiency
818   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
819   for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.15); //10% (to be checked!!)
820
821   // Raw yield extraction
822   fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
823   fRawYield->SetBinContent(1,1);
824   fRawYield->SetBinContent(2,1);
825   fRawYield->SetBinContent(3,0.14);
826   fRawYield->SetBinContent(4,0.14);
827   fRawYield->SetBinContent(5,0.12);
828   fRawYield->SetBinContent(6,0.12);
829   fRawYield->SetBinContent(7,0.06);
830   fRawYield->SetBinContent(8,0.06);
831   fRawYield->SetBinContent(9,0.08);
832   fRawYield->SetBinContent(10,0.08);
833   fRawYield->SetBinContent(11,0.08);
834   fRawYield->SetBinContent(12,0.08);
835   for(Int_t i=9;i<=20;i++) fRawYield->SetBinContent(i,0.065);
836
837   // Cuts efficiency (from cuts variation)
838   fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
839   for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10);  
840   fCutsEff->SetBinContent(3,0.15);
841   fCutsEff->SetBinContent(4,0.15);
842   fCutsEff->SetBinContent(5,0.15);
843   fCutsEff->SetBinContent(6,0.15);
844   fCutsEff->SetBinContent(7,0.10);
845   fCutsEff->SetBinContent(8,0.10);
846   fCutsEff->SetBinContent(9,0.10);
847   fCutsEff->SetBinContent(10,0.10);
848   fCutsEff->SetBinContent(11,0.10);
849   fCutsEff->SetBinContent(12,0.10);
850
851   // PID efficiency (from PID/noPID)
852   fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
853   for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 10%
854
855   // MC dN/dpt
856   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
857   for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,0.01);
858   fMCPtShape->SetBinContent(1,0.03);
859   fMCPtShape->SetBinContent(2,0.03);
860
861   return;
862 }
863
864 //------------------------------------------------------------------------
865 void AliHFSystErr::InitDstartoD0pi2010PbPb020() {
866   // 
867   // D*+->D0pi syst errors. Responsible: A. Grelli
868   //  2010 PbPb sample, 0-20 CC
869   //
870
871   AliInfo(" Settings for D*+ --> D0pi Pb-Pb collisions at 2.76 TeV - 0-20 centrality - DUMMY"); 
872
873  // Normalization
874   fNorm = new TH1F("fNorm","fNorm",24,0,24);
875   for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.05); // TAA and pp norm
876
877   // Branching ratio 
878   fBR = new TH1F("fBR","fBR",24,0,24);
879   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
880
881   // Tracking efficiency
882   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);;
883   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
884
885
886   // Raw yield extraction
887   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
888   for(Int_t i=1;i<=24;i++) fRawYield->SetBinContent(i,0.1);  //4%
889   fRawYield->SetBinContent(3,0.2);
890   fRawYield->SetBinContent(4,0.2);
891   fRawYield->SetBinContent(5,0.2);
892   fRawYield->SetBinContent(6,0.2);
893  
894   // Cuts efficiency (from cuts variation)
895   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
896   for(Int_t i=1;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
897   fCutsEff->SetBinContent(4,0.15);
898   fCutsEff->SetBinContent(5,0.15);
899   fCutsEff->SetBinContent(6,0.15);
900
901   // PID efficiency (from PID/noPID)
902   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
903   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.05); // 3%
904  
905
906   // MC dN/dpt  (from study on D* pt shape)
907   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
908   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0.045);
909   fMCPtShape->SetBinContent(4,0.025);
910   fMCPtShape->SetBinContent(5,0.025);
911   fMCPtShape->SetBinContent(6,0.025);
912   fMCPtShape->SetBinContent(7,0.04);
913   fMCPtShape->SetBinContent(8,0.04);
914   fMCPtShape->SetBinContent(9,0.03);
915   fMCPtShape->SetBinContent(10,0.03);
916   fMCPtShape->SetBinContent(11,0.03);
917   fMCPtShape->SetBinContent(12,0.03);
918   
919   return;
920
921 }
922 // ----------------------------- 2011 ----------------------------------
923 void AliHFSystErr::InitDstartoD0pi2011PbPb07half() {
924   // 
925   // D*+->D0pi syst errors. Responsible: A. Grelli
926   //  2011 PbPb sample, 0-7.5 CC
927   //
928
929   AliInfo(" Settings for D*+ --> D0pi Pb-Pb collisions at 2.76 TeV - 0-7.5 centrality - DUMMY"); 
930
931
932  // Normalization
933   fNorm = new TH1F("fNorm","fNorm",36,0,36);
934   for(Int_t i=1;i<=36;i++) fNorm->SetBinContent(i,0.05); // TAA and pp norm
935
936   // Branching ratio 
937   fBR = new TH1F("fBR","fBR",36,0,36);
938   for(Int_t i=1;i<=36;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
939
940   // Tracking efficiency
941   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",36,0,36);;
942   for(Int_t i=1;i<=36;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
943
944
945   // Raw yield extraction
946   fRawYield = new TH1F("fRawYield","fRawYield",36,0,36);
947   for(Int_t i=1;i<=36;i++) fRawYield->SetBinContent(i,0.05);  //4%
948   fRawYield->SetBinContent(3,0.2);
949   fRawYield->SetBinContent(4,0.10);
950   fRawYield->SetBinContent(5,0.10);
951   fRawYield->SetBinContent(6,0.08);
952   for(Int_t i=25;i<=36;i++) fRawYield->SetBinContent(i,0.15);  //4%
953
954
955   // Cuts efficiency (from cuts variation)
956   fCutsEff = new TH1F("fCutsEff","fCutsEff",36,0,36);
957   for(Int_t i=1;i<=36;i++) fCutsEff->SetBinContent(i,0.10); // 10%
958   fCutsEff->SetBinContent(4,0.1);
959   fCutsEff->SetBinContent(5,0.05);
960   fCutsEff->SetBinContent(6,0.1);
961
962   // PID efficiency (from PID/noPID)
963   fPIDEff = new TH1F("fPIDEff","fPIDEff",36,0,36);
964   for(Int_t i=1;i<=36;i++) fPIDEff->SetBinContent(i,0.05); // 3%
965   fPIDEff->SetBinContent(3,0.09);
966
967   // MC dN/dpt  (from study on D* pt shape)
968   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",36,0,36);
969   for(Int_t i=1;i<=36;i++) fMCPtShape->SetBinContent(i,0.045);
970   fMCPtShape->SetBinContent(4,0.025);
971   fMCPtShape->SetBinContent(5,0.025);
972   fMCPtShape->SetBinContent(6,0.025);
973   fMCPtShape->SetBinContent(7,0.04);
974   fMCPtShape->SetBinContent(8,0.04);
975   fMCPtShape->SetBinContent(9,0.03);
976   fMCPtShape->SetBinContent(10,0.03);
977   fMCPtShape->SetBinContent(11,0.03);
978   fMCPtShape->SetBinContent(12,0.03);
979   
980   
981
982   return;
983
984 }
985 //-------------------------------------------------------------------------
986 void AliHFSystErr::InitDstartoD0pi2010PbPb2040() {
987   // 
988   // D*+->D0pi syst errors. Responsible: A. Grelli
989   //  2010 PbPb sample, 20-40 CC
990   //
991
992   AliInfo(" Settings for D*+ --> D0pi Pb-Pb collisions at 2.76 TeV - 20-40 centrality - DUMMY"); 
993
994  // Normalization
995   fNorm = new TH1F("fNorm","fNorm",24,0,24);
996   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
997
998   // Branching ratio 
999   fBR = new TH1F("fBR","fBR",24,0,24);
1000   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
1001
1002   // Tracking efficiency
1003   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);;
1004   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
1005
1006
1007   // Raw yield extraction
1008   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
1009   for(Int_t i=1;i<=24;i++) fRawYield->SetBinContent(i,0.15);  //4%
1010  
1011   // Cuts efficiency (from cuts variation)
1012   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
1013   for(Int_t i=1;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
1014
1015   // PID efficiency (from PID/noPID)
1016   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
1017   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.04); // 3%
1018  
1019
1020   // MC dN/dpt  (copied from D0 : will update later)
1021   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
1022   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0.);
1023   fMCPtShape->SetBinContent(1,0.03);
1024   fMCPtShape->SetBinContent(2,0.03);
1025
1026   return;
1027
1028 }
1029
1030 //--------------------------------------------------------------------------
1031 void AliHFSystErr::InitDstartoD0pi2010PbPb4080() {
1032   // 
1033   // D*+->D0pi syst errors. Responsible: A. Grelli
1034   //  2010 PbPb sample, 40-80 CC
1035   //
1036
1037   AliInfo(" Settings for D*+ --> D0pi Pb-Pb collisions at 2.76 TeV - 40-80 centrality - DUMMY"); 
1038
1039  // Normalization
1040   fNorm = new TH1F("fNorm","fNorm",24,0,24);
1041   for(Int_t i=1;i<=24;i++) fNorm->SetBinContent(i,0.07); // TAA and pp norm
1042
1043   // Branching ratio 
1044   fBR = new TH1F("fBR","fBR",24,0,24);
1045   for(Int_t i=1;i<=24;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
1046
1047   // Tracking efficiency
1048   fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",24,0,24);;
1049   for(Int_t i=1;i<=24;i++) fTrackingEff->SetBinContent(i,0.15); // Jacek, 5% per track
1050
1051
1052   // Raw yield extraction
1053   fRawYield = new TH1F("fRawYield","fRawYield",24,0,24);
1054   for(Int_t i=1;i<=24;i++) fRawYield->SetBinContent(i,0.2);  //4%
1055   fRawYield->SetBinContent(1,1);
1056   fRawYield->SetBinContent(2,0.15);
1057   fRawYield->SetBinContent(3,0.15);
1058   fRawYield->SetBinContent(4,0.15);
1059   fRawYield->SetBinContent(5,0.15);
1060   fRawYield->SetBinContent(6,0.10);
1061   fRawYield->SetBinContent(7,0.10);
1062   fRawYield->SetBinContent(8,0.10);
1063   fRawYield->SetBinContent(9,0.11);
1064   fRawYield->SetBinContent(10,0.11);
1065   fRawYield->SetBinContent(11,0.11);
1066   fRawYield->SetBinContent(12,0.11);
1067   fRawYield->SetBinContent(13,0.08);
1068   fRawYield->SetBinContent(14,0.08);
1069   fRawYield->SetBinContent(15,0.08);
1070   fRawYield->SetBinContent(16,0.08);
1071
1072
1073   // Cuts efficiency (from cuts variation)
1074   fCutsEff = new TH1F("fCutsEff","fCutsEff",24,0,24);
1075   for(Int_t i=1;i<=24;i++) fCutsEff->SetBinContent(i,0.10); // 10%
1076
1077   // PID efficiency (from PID/noPID)
1078   fPIDEff = new TH1F("fPIDEff","fPIDEff",24,0,24);
1079   for(Int_t i=1;i<=24;i++) fPIDEff->SetBinContent(i,0.05); // 3%
1080  
1081
1082   // MC dN/dpt  (copied from D0 : will update later)
1083   fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",24,0,24);
1084   for(Int_t i=1;i<=24;i++) fMCPtShape->SetBinContent(i,0.01);
1085   fMCPtShape->SetBinContent(2,0.05);
1086   fMCPtShape->SetBinContent(3,0.05);
1087   fMCPtShape->SetBinContent(4,0.05);
1088   fMCPtShape->SetBinContent(5,0.04);
1089   fMCPtShape->SetBinContent(6,0.02);
1090   fMCPtShape->SetBinContent(7,0.04);
1091   fMCPtShape->SetBinContent(8,0.04);
1092  
1093   return;
1094
1095 }
1096
1097 //--------------------------------------------------------------------------
1098 void AliHFSystErr::InitD0toKpi2010PbPb010CentScan(){
1099   // define errors for RAA vs. centrality
1100   InitD0toKpi2010PbPb020();
1101   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05);
1102   for(Int_t i=3;i<=5;i++) fMCPtShape->SetBinContent(i,0.17);      
1103   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08); 
1104 }
1105 //--------------------------------------------------------------------------
1106 void AliHFSystErr::InitD0toKpi2010PbPb1020CentScan(){
1107   // define errors for RAA vs. centrality
1108   InitD0toKpi2010PbPb020();
1109   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05);
1110   for(Int_t i=3;i<=5;i++)  fMCPtShape->SetBinContent(i,0.17);    
1111   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08); 
1112 }
1113 //--------------------------------------------------------------------------
1114 void AliHFSystErr::InitD0toKpi2010PbPb2040CentScan(){
1115   // define errors for RAA vs. centrality
1116   InitD0toKpi2010PbPb4080();
1117   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05);
1118   for(Int_t i=3;i<=5;i++)  fMCPtShape->SetBinContent(i,0.14);
1119   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08); 
1120 }
1121 //--------------------------------------------------------------------------
1122 void AliHFSystErr::InitD0toKpi2010PbPb4060CentScan(){
1123    // define errors for RAA vs. centrality
1124   InitD0toKpi2010PbPb4080();
1125   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.06);
1126   for(Int_t i=3;i<=5;i++)  fMCPtShape->SetBinContent(i,0.11);  
1127   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08); 
1128 }
1129 //--------------------------------------------------------------------------
1130 void AliHFSystErr::InitD0toKpi2010PbPb6080CentScan(){
1131    // define errors for RAA vs. centrality
1132   InitD0toKpi2010PbPb4080();
1133   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.08);
1134   for(Int_t i=3;i<=5;i++) fMCPtShape->SetBinContent(i,0.08);
1135   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08); 
1136 }
1137 //--------------------------------------------------------------------------
1138 void AliHFSystErr::InitDplustoKpipi2010PbPb010CentScan(){
1139   // define errors for RAA vs. centrality
1140   InitDplustoKpipi2010PbPb020();
1141   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.18);
1142   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.09);
1143
1144 }
1145 //--------------------------------------------------------------------------
1146 void AliHFSystErr::InitDplustoKpipi2010PbPb1020CentScan(){
1147   // define errors for RAA vs. centrality
1148   InitDplustoKpipi2010PbPb020();
1149   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.23);
1150   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08);
1151 }
1152 //--------------------------------------------------------------------------
1153 void AliHFSystErr::InitDplustoKpipi2010PbPb2040CentScan(){
1154   // define errors for RAA vs. centrality
1155   InitDplustoKpipi2010PbPb020();
1156   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.08);
1157   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.095);
1158 }
1159 //--------------------------------------------------------------------------
1160 void AliHFSystErr::InitDplustoKpipi2010PbPb4060CentScan(){
1161   // define errors for RAA vs. centrality
1162   InitDplustoKpipi2010PbPb4080();
1163   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.08);
1164   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08);
1165 }
1166 //--------------------------------------------------------------------------
1167 void AliHFSystErr::InitDplustoKpipi2010PbPb6080CentScan(){
1168   // define errors for RAA vs. centrality
1169   InitDplustoKpipi2010PbPb4080();
1170   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.15);
1171   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.07);
1172 }
1173
1174 //--------------------------------------------------------------------------
1175 void AliHFSystErr::InitDstartoD0pi2010PbPb010CentScan(){
1176   // define errors for RAA vs. centrality
1177   InitDstartoD0pi2010PbPb020();
1178   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.16); 
1179   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.15);
1180 }
1181 //--------------------------------------------------------------------------
1182 void AliHFSystErr::InitDstartoD0pi2010PbPb1020CentScan(){
1183   // define errors for RAA vs. centrality
1184   InitDstartoD0pi2010PbPb020();
1185   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05); 
1186   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.15);
1187 }
1188 //--------------------------------------------------------------------------
1189 void AliHFSystErr::InitDstartoD0pi2010PbPb2040CentScan(){
1190   // define errors for RAA vs. centrality
1191   InitDstartoD0pi2010PbPb2040();
1192   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.10); 
1193   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.08);
1194 }
1195 //--------------------------------------------------------------------------
1196 void AliHFSystErr::InitDstartoD0pi2010PbPb4060CentScan(){
1197   // define errors for RAA vs. centrality
1198   InitDstartoD0pi2010PbPb4080();
1199   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.10); 
1200   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.045);
1201 }
1202 //--------------------------------------------------------------------------
1203 void AliHFSystErr::InitDstartoD0pi2010PbPb6080CentScan(){
1204   // define errors for RAA vs. centrality
1205   InitDstartoD0pi2010PbPb4080();
1206   for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.10); 
1207   for(Int_t i=7;i<=12;i++) fMCPtShape->SetBinContent(i,0.045);
1208 }
1209
1210
1211 //--------------------------------------------------------------------------
1212 Double_t AliHFSystErr::GetCutsEffErr(Double_t pt) const {
1213   // 
1214   // Get error
1215   //
1216
1217   Int_t bin=fCutsEff->FindBin(pt);
1218
1219   return fCutsEff->GetBinContent(bin);
1220 }
1221 //--------------------------------------------------------------------------
1222 Double_t AliHFSystErr::GetMCPtShapeErr(Double_t pt) const {
1223   // 
1224   // Get error
1225   //
1226
1227   Int_t bin=fMCPtShape->FindBin(pt);
1228
1229   return fMCPtShape->GetBinContent(bin);
1230 }
1231 //--------------------------------------------------------------------------
1232 Double_t AliHFSystErr::GetSeleEffErr(Double_t pt) const {
1233   // 
1234   // Get error
1235   //
1236
1237   Double_t err=GetCutsEffErr(pt)*GetCutsEffErr(pt)+GetMCPtShapeErr(pt)*GetMCPtShapeErr(pt);
1238
1239   return TMath::Sqrt(err);
1240 }
1241 //--------------------------------------------------------------------------
1242 Double_t AliHFSystErr::GetPIDEffErr(Double_t pt) const {
1243   // 
1244   // Get error
1245   //
1246
1247   Int_t bin=fPIDEff->FindBin(pt);
1248
1249   return fPIDEff->GetBinContent(bin);
1250 }
1251 //--------------------------------------------------------------------------
1252 Double_t AliHFSystErr::GetTrackingEffErr(Double_t pt) const {
1253   // 
1254   // Get error
1255   //
1256
1257   Int_t bin=fTrackingEff->FindBin(pt);
1258
1259   return fTrackingEff->GetBinContent(bin);
1260 }
1261 //--------------------------------------------------------------------------
1262 Double_t AliHFSystErr::GetRawYieldErr(Double_t pt) const {
1263   // 
1264   // Get error
1265   //
1266
1267   Int_t bin=fRawYield->FindBin(pt);
1268
1269   return fRawYield->GetBinContent(bin);
1270 }
1271 //--------------------------------------------------------------------------
1272 Double_t AliHFSystErr::GetPartAntipartErr(Double_t pt) const {
1273   // 
1274   // Get error
1275   //
1276
1277   Int_t bin=fPartAntipart->FindBin(pt);
1278
1279   return fPartAntipart->GetBinContent(bin);
1280 }
1281 //--------------------------------------------------------------------------
1282 Double_t AliHFSystErr::GetTotalSystErr(Double_t pt,Double_t feeddownErr) const {
1283   // 
1284   // Get total syst error (except norm. error)
1285   //
1286
1287   Double_t err=0.;
1288
1289   if(fRawYield) err += GetRawYieldErr(pt)*GetRawYieldErr(pt);
1290   if(fTrackingEff) err += GetTrackingEffErr(pt)*GetTrackingEffErr(pt);
1291   //  if(fBR) err += GetBRErr()*GetBRErr();
1292   if(fCutsEff) err += GetCutsEffErr(pt)*GetCutsEffErr(pt);
1293   if(fPIDEff) err += GetPIDEffErr(pt)*GetPIDEffErr(pt);
1294   if(fMCPtShape) err += GetMCPtShapeErr(pt)*GetMCPtShapeErr(pt);
1295   if(fPartAntipart) err += GetPartAntipartErr(pt)*GetPartAntipartErr(pt);
1296
1297   err += feeddownErr*feeddownErr;
1298
1299   return TMath::Sqrt(err);
1300 }
1301 //---------------------------------------------------------------------------
1302 void AliHFSystErr::DrawErrors(TGraphAsymmErrors *grErrFeeddown) const {
1303   //
1304   // Draw errors
1305   //
1306   gStyle->SetOptStat(0);
1307
1308   TCanvas *cSystErr = new TCanvas("cSystErr","Systematic Errors",300,80,640,500);
1309   cSystErr->Range(0.20,-0.5,18.4,0.34);
1310   cSystErr->SetRightMargin(0.318);
1311   cSystErr->SetFillColor(0);
1312
1313   TH2F *hFrame = new TH2F("hFrame","Systematic errors; p_{t} (GeV/c); Relative Error",30,0,30,100,-1,+1);
1314   hFrame->SetAxisRange(1.,24.9,"X");
1315   hFrame->SetAxisRange(-0.5,0.5,"Y");
1316   hFrame->Draw();
1317
1318   TLegend *leg = new TLegend(0.69,0.44,0.98,0.86,NULL,"brNDC");
1319   leg->SetTextSize(0.03601695);
1320   leg->SetFillStyle(0);
1321   leg->SetBorderSize(0);
1322   
1323   TH1F *hTotErr=new TH1F("hTotErr","",24,0,24);
1324   Int_t nbins = fNorm->GetNbinsX();
1325   TGraphAsymmErrors *gTotErr = new TGraphAsymmErrors(nbins);
1326   for(Int_t i=1;i<=24;i++) {
1327     Double_t pt = hTotErr->GetBinCenter(i);
1328     Double_t ptwidth = hTotErr->GetBinWidth(i);
1329
1330     if(grErrFeeddown) {
1331       Double_t x=0., y=0., errxl=0., errxh=0., erryl=0., erryh=0.;
1332       Double_t toterryl=0., toterryh=0.;
1333       for(Int_t j=0; j<grErrFeeddown->GetN(); j++) {
1334         grErrFeeddown->GetPoint(j,x,y);
1335         errxh = grErrFeeddown->GetErrorXhigh(j);
1336         errxl = grErrFeeddown->GetErrorXlow(j);
1337         if ( ( (x-errxl) <= pt) && ( (x+errxl) >= pt) ) {
1338           erryh = grErrFeeddown->GetErrorYhigh(j);
1339           erryl = grErrFeeddown->GetErrorYlow(j);
1340         }
1341       }
1342       if (erryl>=1e-3) toterryl = GetTotalSystErr(pt,erryl);
1343       else toterryl = GetTotalSystErr(pt);
1344       if (erryh>=1e-3) toterryh = GetTotalSystErr(pt,erryh);
1345       else toterryh = GetTotalSystErr(pt);
1346
1347       hTotErr->SetBinContent(i,toterryh);
1348       gTotErr->SetPoint(i,pt,0.);
1349       gTotErr->SetPointError(i,ptwidth/2.,ptwidth/2.,toterryl,toterryh); // i, exl, exh, eyl, eyh
1350     }
1351     else {
1352       hTotErr->SetBinContent(i,GetTotalSystErr(pt));
1353       gTotErr->SetPoint(i,pt,0.);
1354       gTotErr->SetPointError(i,ptwidth/2.,ptwidth/2.,GetTotalSystErr(pt),GetTotalSystErr(pt)); // i, exl, exh, eyl, eyh
1355     }
1356
1357   }
1358   gTotErr->SetLineColor(kBlack);
1359   gTotErr->SetFillColor(kRed);
1360   gTotErr->SetFillStyle(3002);
1361   gTotErr->Draw("2");
1362   leg->AddEntry(gTotErr,"Total (excl. norm.)","f");
1363 //   hTotErr->SetLineColor(1);
1364 //   hTotErr->SetLineWidth(3);
1365 //   hTotErr->Draw("same");
1366 //   leg->AddEntry(hTotErr,"Total (excl. norm.)","l");
1367   
1368
1369   fNorm->SetFillColor(1);
1370   fNorm->SetFillStyle(3002);
1371   //fNorm->Draw("same");
1372   //TH1F *hNormRefl = ReflectHisto(fNorm);
1373   //hNormRefl->Draw("same");
1374   Double_t norm = fNorm->GetBinContent(1)*100;
1375   leg->AddEntry(fNorm,Form("Normalization (%.1f%s)",norm,"%"),"");
1376
1377   if(grErrFeeddown) {
1378     grErrFeeddown->SetFillColor(kTeal-8);
1379     grErrFeeddown->SetFillStyle(3001);
1380     grErrFeeddown->Draw("2");
1381     leg->AddEntry(grErrFeeddown,"Feed-down from B","f");
1382   }
1383   if(fTrackingEff) {
1384     fTrackingEff->SetFillColor(4);
1385     fTrackingEff->SetFillStyle(3006);
1386     fTrackingEff->Draw("same");
1387     TH1F *hTrackingEffRefl = ReflectHisto(fTrackingEff);
1388     hTrackingEffRefl->Draw("same");
1389     leg->AddEntry(fTrackingEff,"Tracking efficiency","f");
1390   }
1391   if(fBR) {
1392     fBR->SetFillColor(6);
1393     fBR->SetFillStyle(3005);
1394     //fBR->SetFillStyle(3020);
1395     fBR->Draw("same");
1396     TH1F *hBRRefl = ReflectHisto(fBR);
1397     hBRRefl->Draw("same");
1398     leg->AddEntry(fBR,"Branching ratio","f");
1399   }
1400   if(fRawYield) {
1401     Int_t ci;   // for color index setting
1402     ci = TColor::GetColor("#00cc00");
1403     fRawYield->SetLineColor(ci);
1404     //    fRawYield->SetLineColor(3);
1405     fRawYield->SetLineWidth(3);
1406     fRawYield->Draw("same");
1407     TH1F *hRawYieldRefl = ReflectHisto(fRawYield);
1408     hRawYieldRefl->Draw("same");
1409     leg->AddEntry(fRawYield,"Yield extraction","l");
1410   }
1411   if(fCutsEff) {
1412     fCutsEff->SetLineColor(4);
1413     fCutsEff->SetLineWidth(3);
1414     fCutsEff->Draw("same");
1415     TH1F *hCutsEffRefl = ReflectHisto(fCutsEff);
1416     hCutsEffRefl->Draw("same");
1417     leg->AddEntry(fCutsEff,"Cuts efficiency","l");
1418   }
1419   if(fPIDEff) {
1420     fPIDEff->SetLineColor(7);
1421     fPIDEff->SetLineWidth(3);
1422     fPIDEff->Draw("same");
1423     TH1F *hPIDEffRefl = ReflectHisto(fPIDEff);
1424     hPIDEffRefl->Draw("same");
1425     leg->AddEntry(fPIDEff,"PID efficiency","l");
1426   }
1427   if(fMCPtShape) {
1428     Int_t ci = TColor::GetColor("#9933ff");
1429     fMCPtShape->SetLineColor(ci);
1430     //    fMCPtShape->SetLineColor(8);
1431     fMCPtShape->SetLineWidth(3);
1432     fMCPtShape->Draw("same");
1433     TH1F *hMCPtShapeRefl = ReflectHisto(fMCPtShape);
1434     hMCPtShapeRefl->Draw("same");
1435     leg->AddEntry(fMCPtShape,"MC p_{t} shape","l");
1436   }
1437   if(fPartAntipart) {
1438     Int_t ci = TColor::GetColor("#ff6600");
1439     fPartAntipart->SetLineColor(ci);
1440     //    fPartAntipart->SetLineColor(9);
1441     fPartAntipart->SetLineWidth(3);
1442     fPartAntipart->Draw("same");
1443     TH1F *hPartAntipartRefl = ReflectHisto(fPartAntipart);
1444     hPartAntipartRefl->Draw("same");
1445     leg->AddEntry(fPartAntipart,"D = #bar{D}","l");
1446   }
1447
1448
1449   leg->Draw();
1450
1451   cSystErr->SaveAs("RelativeSystematics.eps");
1452
1453   return;
1454 }
1455 //-------------------------------------------------------------------------
1456 TH1F* AliHFSystErr::ReflectHisto(TH1F *hin) const {
1457   //
1458   // Clones and reflects histogram 
1459   // 
1460   TH1F *hout=(TH1F*)hin->Clone("hout");
1461   hout->Scale(-1.);
1462
1463   return hout;
1464 }
1465