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