]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliHFSystErr.cxx
Adding OADB to EINCLUDE
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliHFSystErr.cxx
CommitLineData
0233abe6 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
27de2dfb 16/* $Id$ */
17
0233abe6 18/////////////////////////////////////////////////////////////
19//
20// Class to handle systematic errors for charm hadrons
21//
22// Usage:
5541b811 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*
0233abe6 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>
5ad8ad40 40#include <TColor.h>
0233abe6 41
5541b811 42#include "AliLog.h"
0233abe6 43#include "AliHFSystErr.h"
44
45
46ClassImp(AliHFSystErr)
47
48//--------------------------------------------------------------------------
49AliHFSystErr::AliHFSystErr(const Char_t* name, const Char_t* title) :
50TNamed(name,title),
51fNorm(0),
52fRawYield(0),
53fTrackingEff(0),
54fBR(0),
55fCutsEff(0),
56fPIDEff(0),
57fMCPtShape(0),
5541b811 58fPartAntipart(0),
59fRunNumber(10),
60fCollisionType(0),
aebba8df 61fCentralityClass("0100")
0233abe6 62{
63 //
64 // Default Constructor
65 //
66}
5541b811 67
0233abe6 68//--------------------------------------------------------------------------
5541b811 69AliHFSystErr::~AliHFSystErr() {
70 //
71 // Default Destructor
0233abe6 72 //
5541b811 73
74 if(fNorm) { delete fNorm; fNorm=0; }
75 if(fRawYield) { delete fRawYield; fRawYield=0; }
76 if(fTrackingEff) { delete fTrackingEff; fTrackingEff=0; }
77 if(fBR) { delete fBR; fBR=0; }
78 if(fCutsEff) { delete fCutsEff; fCutsEff=0; }
79 if(fPIDEff) { delete fPIDEff; fPIDEff=0; }
80 if(fMCPtShape) { delete fMCPtShape; fMCPtShape=0; }
81 if(fPartAntipart) { delete fPartAntipart; fPartAntipart=0; }
82
83}
84
85//--------------------------------------------------------------------------
86void AliHFSystErr::Init(Int_t decay){
87 //
88 // Variables/histos initialization
0233abe6 89 //
90
5541b811 91 if (fRunNumber!=10) {
92 AliError("Only settings for 2010 are implemented so far");
93 }
aebba8df 94 if (fCentralityClass!="020" && fCentralityClass!="4080" && fCentralityClass!="0100"){
5541b811 95 AliError("Only settings for MB2010 are implemented so far");
96 }
97
0233abe6 98 switch(decay) {
99 case 1: // D0->Kpi
5541b811 100 if (fCollisionType==0) InitD0toKpi2010pp();
101 else if (fCollisionType==1) {
aebba8df 102 if (fCentralityClass=="020") InitD0toKpi2010PbPb020();
103 else if (fCentralityClass=="4080") InitD0toKpi2010PbPb4080();
5541b811 104 else AliError("Not yet implemented");
105 }
0233abe6 106 break;
107 case 2: // D+->Kpipi
5541b811 108 if (fCollisionType==0) InitDplustoKpipi2010pp();
109 else if (fCollisionType==1) {
aebba8df 110 if (fCentralityClass=="020") InitDplustoKpipi2010PbPb020();
111 else if (fCentralityClass=="4080") InitDplustoKpipi2010PbPb4080();
5541b811 112 else AliError("Not yet implemented");
113 }
0233abe6 114 break;
115 case 3: // D*->D0pi
5541b811 116 if (fCollisionType==0) InitDstartoD0pi2010pp();
117 else if (fCollisionType==1) {
aebba8df 118 if (fCentralityClass=="020") InitDstartoD0pi2010PbPb020();
119 else if (fCentralityClass=="4080") InitDstartoD0pi2010PbPb4080();
5541b811 120 else AliError("Not yet implemented");
121 }
0233abe6 122 break;
123 default:
124 printf("Invalid decay type: %d\n",decay);
125 break;
126 }
127
0233abe6 128}
5541b811 129
0233abe6 130//--------------------------------------------------------------------------
5541b811 131void AliHFSystErr::InitD0toKpi2010pp() {
132 //
133 // D0->Kpi syst errors. Responsible: A. Rossi
134 // 2010 pp sample
0233abe6 135 //
136
5541b811 137 // Normalization
138 fNorm = new TH1F("fNorm","fNorm",20,0,20);
139 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
140
141 // Branching ratio
142 fBR = new TH1F("fBR","fBR",20,0,20);
143 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
144
145 // Tracking efficiency
146 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
147 for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.02); // 2% (1% per track)
148
149 // Raw yield extraction
150 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
151 fRawYield->SetBinContent(1,1);
152 fRawYield->SetBinContent(2,1);
153 fRawYield->SetBinContent(3,0.15);
154 for(Int_t i=4;i<=20;i++) fRawYield->SetBinContent(i,0.065);
0233abe6 155
5541b811 156 // Cuts efficiency (from cuts variation)
157 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
158 for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10%
159
160 // PID efficiency (from PID/noPID)
161 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
162 for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.03); // 3%
163 fPIDEff->SetBinContent(4,0.10); // 10%
164
165 // MC dN/dpt
166 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
167 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
168
169 // particle-antiparticle
170 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
171 fPartAntipart->SetBinContent(1,1);
172 fPartAntipart->SetBinContent(2,1);
173 for(Int_t i=3;i<=6;i++) fPartAntipart->SetBinContent(i,0.08);
174
175 return;
0233abe6 176}
177//--------------------------------------------------------------------------
5541b811 178void AliHFSystErr::InitD0toKpi2010PbPb020() {
0233abe6 179 //
aebba8df 180 // D0->Kpi syst errors. Responsible: A. Rossi
5541b811 181 // 2010 PbPb sample, 0-20 CC
0233abe6 182 //
5541b811 183
184 // Normalization
185 fNorm = new TH1F("fNorm","fNorm",20,0,20);
186 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
187
188 // Branching ratio
189 fBR = new TH1F("fBR","fBR",20,0,20);
190 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
191
192 // Tracking efficiency
193 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
aebba8df 194 for(Int_t i=2;i<=12;i++) fTrackingEff->SetBinContent(i,0.05+0.005*(Float_t)i);
666cf569 195
5541b811 196
197 // Raw yield extraction
198 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
199 fRawYield->SetBinContent(1,0);
200 fRawYield->SetBinContent(2,0);
aebba8df 201 fRawYield->SetBinContent(3,0.05);
202 fRawYield->SetBinContent(4,0.05);
203 fRawYield->SetBinContent(5,0.10);
204 fRawYield->SetBinContent(6,0.10);
205 for(Int_t i=7;i<=12;i++) fRawYield->SetBinContent(i,0.05);
666cf569 206 // for(Int_t i=13;i<=20;i++) fRawYield->SetBinContent(i,0);
5541b811 207
208 // Cuts efficiency (from cuts variation)
209 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
aebba8df 210 fCutsEff->SetBinContent(1,0.);
211 fCutsEff->SetBinContent(2,0.);
666cf569 212 fCutsEff->SetBinContent(3,0.18);
aebba8df 213 fCutsEff->SetBinContent(4,0.18);
214 fCutsEff->SetBinContent(5,0.18);
215 fCutsEff->SetBinContent(6,0.15);
216 fCutsEff->SetBinContent(7,0.15);
217 fCutsEff->SetBinContent(8,0.15);
666cf569 218fCutsEff->SetBinContent(9,0.15);
219 fCutsEff->SetBinContent(10,0.15);
aebba8df 220 fCutsEff->SetBinContent(11,0.15);
221 fCutsEff->SetBinContent(12,0.15);
666cf569 222 // for(Int_t i=13;i<=20;i++) fCutsEff->SetBinContent(i,0.);
5541b811 223
224 // PID efficiency (from PID/noPID)
225 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
aebba8df 226 for(Int_t i=3;i<=12;i++) fPIDEff->SetBinContent(i,0.05);
227 fPIDEff->SetBinContent(5,0.10);
228 fPIDEff->SetBinContent(6,0.10);
5541b811 229
230 // MC dN/dpt
231 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
232 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
233
234 // particle-antiparticle
235 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
aebba8df 236 for(Int_t i=3;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);
666cf569 237 fPartAntipart->SetBinContent(3,0.10);
aebba8df 238 fPartAntipart->SetBinContent(4,0.10);
239 fPartAntipart->SetBinContent(7,0.10);
240 fPartAntipart->SetBinContent(8,0.10);
0233abe6 241
5541b811 242 return;
243}
244//--------------------------------------------------------------------------
245void AliHFSystErr::InitD0toKpi2010PbPb4080() {
246 //
aebba8df 247 // D0->Kpi syst errors. Responsible: A. Rossi
5541b811 248 // 2010 PbPb sample, 40-80 CC
249 //
250
0233abe6 251 // Normalization
252 fNorm = new TH1F("fNorm","fNorm",20,0,20);
844405bc 253 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
0233abe6 254
255 // Branching ratio
256 fBR = new TH1F("fBR","fBR",20,0,20);
844405bc 257 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.012); // 1.2% PDG2010
0233abe6 258
aebba8df 259 // Tracking efficiency
260 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
261 for(Int_t i=2;i<=12;i++) fTrackingEff->SetBinContent(i,0.5*(0.05+0.005*(Float_t)i));
262
263
0233abe6 264 // Raw yield extraction
265 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
5541b811 266 fRawYield->SetBinContent(1,0);
267 fRawYield->SetBinContent(2,0);
46cfcb37 268 for(Int_t i=3;i<=12;i++) fRawYield->SetBinContent(i,0.05);
666cf569 269 //for(Int_t i=13;i<=20;i++) fRawYield->SetBinContent(i,0);
0233abe6 270
271 // Cuts efficiency (from cuts variation)
272 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
aebba8df 273 fCutsEff->SetBinContent(1,0.);
274 fCutsEff->SetBinContent(2,0.);
666cf569 275 fCutsEff->SetBinContent(3,0.15);
46cfcb37 276 fCutsEff->SetBinContent(4,0.15);
277 fCutsEff->SetBinContent(5,0.15);
aebba8df 278 fCutsEff->SetBinContent(6,0.15);
279 fCutsEff->SetBinContent(7,0.15);
280 fCutsEff->SetBinContent(8,0.15);
281 fCutsEff->SetBinContent(9,0.15);
282 fCutsEff->SetBinContent(10,0.15);
283 fCutsEff->SetBinContent(11,0.15);
284 fCutsEff->SetBinContent(12,0.15);
666cf569 285 // for(Int_t i=13;i<=20;i++) fCutsEff->SetBinContent(i,0.);
0233abe6 286
287 // PID efficiency (from PID/noPID)
288 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
aebba8df 289 for(Int_t i=3;i<=12;i++) fPIDEff->SetBinContent(i,0.05);
0233abe6 290
291 // MC dN/dpt
292 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
293 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
294
295 // particle-antiparticle
296 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
aebba8df 297 for(Int_t i=3;i<=12;i++) fPartAntipart->SetBinContent(i,0.05);
0233abe6 298
299 return;
300}
301//--------------------------------------------------------------------------
5541b811 302void AliHFSystErr::InitDplustoKpipi2010pp() {
0233abe6 303 //
304 // D+->Kpipi syst errors. Responsible: R. Bala
5541b811 305 // 2010 pp sample
0233abe6 306 //
307
626bcf57 308 // Normalization
309 fNorm = new TH1F("fNorm","fNorm",20,0,20);
844405bc 310 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
626bcf57 311
312 // Branching ratio
313 fBR = new TH1F("fBR","fBR",20,0,20);
844405bc 314 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.04); // 4% PDG2010
626bcf57 315
316 // Tracking efficiency
317 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
844405bc 318 for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.03); // 3% (1% per track)
626bcf57 319
320
321 // Raw yield extraction
322 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
323 fRawYield->SetBinContent(1,1);
324 fRawYield->SetBinContent(2,1);
5c73c2f5 325 fRawYield->SetBinContent(3,0.20);
5ad8ad40 326 for(Int_t i=4;i<=20;i++) fRawYield->SetBinContent(i,0.055); //5 to 10%
626bcf57 327
328 // Cuts efficiency (from cuts variation)
329 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
330 for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10%
331
332 // PID efficiency (from PID/noPID)
333 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
334 for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
335 fPIDEff->SetBinContent(3,0.13); // 13%
336
337
338 // MC dN/dpt (copied from D0 : will update later)
339 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
340 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
341
342
343 // particle-antiparticle
344 /*
345 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
346 fPartAntipart->SetBinContent(1,1);
347 fPartAntipart->SetBinContent(2,1);
348 fPartAntipart->SetBinContent(3,0.12);
349 for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05); //5 to 12%
350 */
0233abe6 351 return;
352}
353//--------------------------------------------------------------------------
5541b811 354void AliHFSystErr::InitDplustoKpipi2010PbPb020() {
355 //
356 // D+->Kpipi syst errors. Responsible: ??
357 // 2010 PbPb sample, 0-20 CC
358 //
aebba8df 359
360
361 // Normalization
362 fNorm = new TH1F("fNorm","fNorm",20,0,20);
363 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
364
365 // Branching ratio
366 fBR = new TH1F("fBR","fBR",20,0,20);
367 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.04); // 4% PDG2010
368
369 // Tracking efficiency
370 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
666cf569 371 for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,i,0.075+0.005*(Float_t)i);
aebba8df 372
373
374 // Raw yield extraction
375 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
376 for(Int_t i=1;i<=20;i++) fRawYield->SetBinContent(i,1); //5 to 10%
666cf569 377// for(Int_t i=6;i<=7;i++) fRawYield->SetBinContent(i,0.32);
378// for(Int_t i=7;i<=9;i++) fRawYield->SetBinContent(i,0.32);
379// for(Int_t i=9;i<=12;i++) fRawYield->SetBinContent(i,0.05);//31./156.);
380 fRawYield->SetBinContent(6,0.32);
381 fRawYield->SetBinContent(7,0.32);
382 fRawYield->SetBinContent(8,0.32);
383 fRawYield->SetBinContent(9,0.05);
384 fRawYield->SetBinContent(10,0.05);
385 fRawYield->SetBinContent(11,0.05);
386 fRawYield->SetBinContent(12,0.05);
aebba8df 387
388 // Cuts efficiency (from cuts variation)
389 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
666cf569 390 for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.15); // 10%
aebba8df 391
392 // PID efficiency (from PID/noPID)
393 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
394 for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
395 fPIDEff->SetBinContent(3,0.13); // 13%
396
397
398 // MC dN/dpt (copied from D0 : will update later)
399 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
400 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
401
402
403 // particle-antiparticle
404 /*
405 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
406 fPartAntipart->SetBinContent(1,1);
407 fPartAntipart->SetBinContent(2,1);
408 fPartAntipart->SetBinContent(3,0.12);
409 for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05); //5 to 12%
410 */
5541b811 411 return;
412}
413
414//--------------------------------------------------------------------------
415void AliHFSystErr::InitDplustoKpipi2010PbPb4080() {
416 //
417 // D+->Kpipi syst errors. Responsible: ??
418 // 2010 PbPb sample, 40-80 CC
419 //
420
aebba8df 421
422 // Normalization
423 fNorm = new TH1F("fNorm","fNorm",20,0,20);
424 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
425
426 // Branching ratio
427 fBR = new TH1F("fBR","fBR",20,0,20);
428 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.04); // 4% PDG2010
429
430 // Tracking efficiency
431 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
432 for(Int_t i=1;i<=20;i++) fTrackingEff->SetBinContent(i,0.03); // 3% (1% per track)
433
434
435 // Raw yield extraction
436 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
437 fRawYield->SetBinContent(1,1);
438 fRawYield->SetBinContent(2,1);
439 fRawYield->SetBinContent(3,1);
440 fRawYield->SetBinContent(4,1.);
441 fRawYield->SetBinContent(5,4./23.);
442 fRawYield->SetBinContent(6,4./23.);
443 fRawYield->SetBinContent(7,5./20.);
444 fRawYield->SetBinContent(8,5./20.);
445 for(Int_t i=9;i<=12;i++) fRawYield->SetBinContent(i,1./16.);
446 for(Int_t i=13;i<=20;i++) fRawYield->SetBinContent(i,1); //5 to 10%
447
448 // Cuts efficiency (from cuts variation)
449 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
450 for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10%
451
452 // PID efficiency (from PID/noPID)
453 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
454 for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.05); // 5%
455 fPIDEff->SetBinContent(3,0.13); // 13%
456
457
458 // MC dN/dpt (copied from D0 : will update later)
459 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
460 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
461
462
463 // particle-antiparticle
464 /*
465 fPartAntipart = new TH1F("fPartAntipart","fPartAntipart",20,0,20);
466 fPartAntipart->SetBinContent(1,1);
467 fPartAntipart->SetBinContent(2,1);
468 fPartAntipart->SetBinContent(3,0.12);
469 for(Int_t i=4;i<=20;i++) fPartAntipart->SetBinContent(i,0.05); //5 to 12%
470 */
5541b811 471 return;
472}
473
474//--------------------------------------------------------------------------
475void AliHFSystErr::InitDstartoD0pi2010pp() {
0233abe6 476 //
2cf98d0d 477 // D*+->D0pi syst errors. Responsible: A. Grelli, Y. Wang
5541b811 478 // 2010 pp sample
0233abe6 479 //
480
2cf98d0d 481 // Normalization
482 fNorm = new TH1F("fNorm","fNorm",20,0,20);
483 for(Int_t i=1;i<=20;i++) fNorm->SetBinContent(i,0.10); // 10% error on sigmaV0and
484
485 // Branching ratio
486 fBR = new TH1F("fBR","fBR",20,0,20);
8accac87 487 for(Int_t i=1;i<=20;i++) fBR->SetBinContent(i,0.015); // 1.5% PDG2010
2cf98d0d 488
489 // Tracking efficiency
490 fTrackingEff = new TH1F("fTrackingEff","fTrackingEff",20,0,20);
491 fTrackingEff->SetBinContent(1,0.12);
492 fTrackingEff->SetBinContent(2,0.08);
8accac87 493 fTrackingEff->SetBinContent(3,0.05);
2cf98d0d 494 for(Int_t i=4;i<=20;i++) fTrackingEff->SetBinContent(i,0.03); // 3% (1% per track)
495
496
497 // Raw yield extraction
498 fRawYield = new TH1F("fRawYield","fRawYield",20,0,20);
8accac87 499 fRawYield->SetBinContent(1,1);
500 fRawYield->SetBinContent(2,0.12);
501 fRawYield->SetBinContent(3,0.09);
502 fRawYield->SetBinContent(4,0.08);
503 fRawYield->SetBinContent(5,0.06);
504 for(Int_t i=5;i<=20;i++) fRawYield->SetBinContent(i,0.04); //4%
2cf98d0d 505
506 // Cuts efficiency (from cuts variation)
507 fCutsEff = new TH1F("fCutsEff","fCutsEff",20,0,20);
508 for(Int_t i=1;i<=20;i++) fCutsEff->SetBinContent(i,0.10); // 10%
509
510 // PID efficiency (from PID/noPID)
511 fPIDEff = new TH1F("fPIDEff","fPIDEff",20,0,20);
8accac87 512 for(Int_t i=1;i<=20;i++) fPIDEff->SetBinContent(i,0.04); // 3%
513 fPIDEff->SetBinContent(1,1); // 100%
514 fPIDEff->SetBinContent(2,1); // 100%
515 fPIDEff->SetBinContent(3,0.05); // 5%
516 fPIDEff->SetBinContent(4,0.05); // 5%
517 fPIDEff->SetBinContent(5,0.05); // 5%
2cf98d0d 518
519
520 // MC dN/dpt (copied from D0 : will update later)
521 fMCPtShape = new TH1F("fMCPtShape","fMCPtShape",20,0,20);
522 for(Int_t i=1;i<=20;i++) fMCPtShape->SetBinContent(i,(Float_t)i*0.006);
523
0233abe6 524 return;
525}
526//--------------------------------------------------------------------------
5541b811 527void AliHFSystErr::InitDstartoD0pi2010PbPb020() {
528 //
529 // D*+->D0pi syst errors. Responsible: ??
530 // 2010 PbPb sample, 0-20 CC
531 //
532
533 AliInfo("Not yet implemented");
534 return;
535}
536//--------------------------------------------------------------------------
537void AliHFSystErr::InitDstartoD0pi2010PbPb4080() {
538 //
539 // D*+->D0pi syst errors. Responsible: ??
540 // 2010 PbPb sample, 40-80 CC
541 //
542
543 AliInfo("Not yet implemented");
544 return;
545}
546//--------------------------------------------------------------------------
0233abe6 547Double_t AliHFSystErr::GetCutsEffErr(Double_t pt) const {
548 //
549 // Get error
550 //
551
552 Int_t bin=fCutsEff->FindBin(pt);
553
554 return fCutsEff->GetBinContent(bin);
555}
556//--------------------------------------------------------------------------
557Double_t AliHFSystErr::GetMCPtShapeErr(Double_t pt) const {
558 //
559 // Get error
560 //
561
562 Int_t bin=fMCPtShape->FindBin(pt);
563
564 return fMCPtShape->GetBinContent(bin);
565}
566//--------------------------------------------------------------------------
567Double_t AliHFSystErr::GetSeleEffErr(Double_t pt) const {
568 //
569 // Get error
570 //
571
572 Double_t err=GetCutsEffErr(pt)*GetCutsEffErr(pt)+GetMCPtShapeErr(pt)*GetMCPtShapeErr(pt);
573
574 return TMath::Sqrt(err);
575}
576//--------------------------------------------------------------------------
577Double_t AliHFSystErr::GetPIDEffErr(Double_t pt) const {
578 //
579 // Get error
580 //
581
582 Int_t bin=fPIDEff->FindBin(pt);
583
584 return fPIDEff->GetBinContent(bin);
585}
586//--------------------------------------------------------------------------
587Double_t AliHFSystErr::GetTrackingEffErr(Double_t pt) const {
588 //
589 // Get error
590 //
591
592 Int_t bin=fTrackingEff->FindBin(pt);
593
594 return fTrackingEff->GetBinContent(bin);
595}
596//--------------------------------------------------------------------------
597Double_t AliHFSystErr::GetRawYieldErr(Double_t pt) const {
598 //
599 // Get error
600 //
601
602 Int_t bin=fRawYield->FindBin(pt);
603
604 return fRawYield->GetBinContent(bin);
605}
606//--------------------------------------------------------------------------
607Double_t AliHFSystErr::GetPartAntipartErr(Double_t pt) const {
608 //
609 // Get error
610 //
611
612 Int_t bin=fPartAntipart->FindBin(pt);
613
614 return fPartAntipart->GetBinContent(bin);
615}
616//--------------------------------------------------------------------------
617Double_t AliHFSystErr::GetTotalSystErr(Double_t pt,Double_t feeddownErr) const {
618 //
619 // Get total syst error (except norm. error)
620 //
621
622 Double_t err=0.;
623
624 if(fRawYield) err += GetRawYieldErr(pt)*GetRawYieldErr(pt);
625 if(fTrackingEff) err += GetTrackingEffErr(pt)*GetTrackingEffErr(pt);
626 if(fBR) err += GetBRErr()*GetBRErr();
627 if(fCutsEff) err += GetCutsEffErr(pt)*GetCutsEffErr(pt);
628 if(fPIDEff) err += GetPIDEffErr(pt)*GetPIDEffErr(pt);
629 if(fMCPtShape) err += GetMCPtShapeErr(pt)*GetMCPtShapeErr(pt);
630 if(fPartAntipart) err += GetPartAntipartErr(pt)*GetPartAntipartErr(pt);
631
632 err += feeddownErr*feeddownErr;
633
634 return TMath::Sqrt(err);
635}
636//---------------------------------------------------------------------------
5ad8ad40 637void AliHFSystErr::DrawErrors(TGraphAsymmErrors *grErrFeeddown) const {
0233abe6 638 //
639 // Draw errors
640 //
641 gStyle->SetOptStat(0);
642
a07118d0 643 TCanvas *cSystErr = new TCanvas("cSystErr","Systematic Errors",300,80,640,500);
644 cSystErr->Range(0.20,-0.5,18.4,0.34);
645 cSystErr->SetRightMargin(0.318);
0233abe6 646 cSystErr->SetFillColor(0);
647
2ee3afe2 648 TH2F *hFrame = new TH2F("hFrame","Systematic errors; p_{t} [GeV/c]; Relative Error",20,0,20,100,-1,+1);
5ad8ad40 649 hFrame->SetAxisRange(2.,11.9,"X");
a07118d0 650 hFrame->SetAxisRange(-0.5,0.5,"Y");
0233abe6 651 hFrame->Draw();
652
a07118d0 653 TLegend *leg = new TLegend(0.69,0.44,0.98,0.86,NULL,"brNDC");
654 leg->SetTextSize(0.03601695);
0233abe6 655 leg->SetFillStyle(0);
656 leg->SetBorderSize(0);
2ee3afe2 657
658 TH1F *hTotErr=new TH1F("hTotErr","",20,0,20);
659 Int_t nbins = fNorm->GetNbinsX();
660 TGraphAsymmErrors *gTotErr = new TGraphAsymmErrors(nbins);
661 for(Int_t i=1;i<=20;i++) {
662 Double_t pt = hTotErr->GetBinCenter(i);
663 Double_t ptwidth = hTotErr->GetBinWidth(i);
664
665 if(grErrFeeddown) {
666 Double_t x=0., y=0., errxl=0., errxh=0., erryl=0., erryh=0.;
667 Double_t toterryl=0., toterryh=0.;
668 for(Int_t j=0; j<grErrFeeddown->GetN(); j++) {
669 grErrFeeddown->GetPoint(j,x,y);
670 errxh = grErrFeeddown->GetErrorXhigh(j);
671 errxl = grErrFeeddown->GetErrorXlow(j);
a07118d0 672 if ( ( (x-errxl) <= pt) && ( (x+errxl) >= pt) ) {
2ee3afe2 673 erryh = grErrFeeddown->GetErrorYhigh(j);
674 erryl = grErrFeeddown->GetErrorYlow(j);
675 }
676 }
677 if (erryl>=1e-3) toterryl = GetTotalSystErr(pt,erryl);
678 else toterryl = GetTotalSystErr(pt);
679 if (erryh>=1e-3) toterryh = GetTotalSystErr(pt,erryh);
680 else toterryh = GetTotalSystErr(pt);
681
682 hTotErr->SetBinContent(i,toterryh);
683 gTotErr->SetPoint(i,pt,0.);
684 gTotErr->SetPointError(i,ptwidth/2.,ptwidth/2.,toterryl,toterryh); // i, exl, exh, eyl, eyh
685 }
686 else {
687 hTotErr->SetBinContent(i,GetTotalSystErr(pt));
688 gTotErr->SetPoint(i,pt,0.);
689 gTotErr->SetPointError(i,ptwidth/2.,ptwidth/2.,GetTotalSystErr(pt),GetTotalSystErr(pt)); // i, exl, exh, eyl, eyh
690 }
691
692 }
f968ef30 693 gTotErr->SetLineColor(kBlack);
694 gTotErr->SetFillColor(kRed);
695 gTotErr->SetFillStyle(3002);
2ee3afe2 696 gTotErr->Draw("2");
697 leg->AddEntry(gTotErr,"Total (excl. norm.)","f");
698// hTotErr->SetLineColor(1);
699// hTotErr->SetLineWidth(3);
700// hTotErr->Draw("same");
701// leg->AddEntry(hTotErr,"Total (excl. norm.)","l");
702
0233abe6 703
e373b9f0 704 fNorm->SetFillColor(1);
705 fNorm->SetFillStyle(3002);
706 //fNorm->Draw("same");
707 //TH1F *hNormRefl = ReflectHisto(fNorm);
708 //hNormRefl->Draw("same");
709 leg->AddEntry(fNorm,"Normalization (10%)","");
710
5ad8ad40 711 if(grErrFeeddown) {
712 grErrFeeddown->SetFillColor(kTeal-8);
713 grErrFeeddown->SetFillStyle(3001);
714 grErrFeeddown->Draw("2");
715 leg->AddEntry(grErrFeeddown,"Feed-down from B","f");
716 }
0233abe6 717 if(fTrackingEff) {
5ad8ad40 718 fTrackingEff->SetFillColor(4);
719 fTrackingEff->SetFillStyle(3006);
0233abe6 720 fTrackingEff->Draw("same");
f968ef30 721 TH1F *hTrackingEffRefl = ReflectHisto(fTrackingEff);
722 hTrackingEffRefl->Draw("same");
0233abe6 723 leg->AddEntry(fTrackingEff,"Tracking efficiency","f");
724 }
725 if(fBR) {
726 fBR->SetFillColor(6);
727 fBR->SetFillStyle(3005);
5ad8ad40 728 //fBR->SetFillStyle(3020);
0233abe6 729 fBR->Draw("same");
f968ef30 730 TH1F *hBRRefl = ReflectHisto(fBR);
731 hBRRefl->Draw("same");
0233abe6 732 leg->AddEntry(fBR,"Branching ratio","f");
733 }
734 if(fRawYield) {
5ad8ad40 735 Int_t ci; // for color index setting
736 ci = TColor::GetColor("#00cc00");
737 fRawYield->SetLineColor(ci);
738 // fRawYield->SetLineColor(3);
0233abe6 739 fRawYield->SetLineWidth(3);
740 fRawYield->Draw("same");
f968ef30 741 TH1F *hRawYieldRefl = ReflectHisto(fRawYield);
742 hRawYieldRefl->Draw("same");
844405bc 743 leg->AddEntry(fRawYield,"Yield extraction","l");
0233abe6 744 }
745 if(fCutsEff) {
746 fCutsEff->SetLineColor(4);
747 fCutsEff->SetLineWidth(3);
748 fCutsEff->Draw("same");
f968ef30 749 TH1F *hCutsEffRefl = ReflectHisto(fCutsEff);
750 hCutsEffRefl->Draw("same");
0233abe6 751 leg->AddEntry(fCutsEff,"Cuts efficiency","l");
752 }
753 if(fPIDEff) {
754 fPIDEff->SetLineColor(7);
755 fPIDEff->SetLineWidth(3);
756 fPIDEff->Draw("same");
f968ef30 757 TH1F *hPIDEffRefl = ReflectHisto(fPIDEff);
758 hPIDEffRefl->Draw("same");
0233abe6 759 leg->AddEntry(fPIDEff,"PID efficiency","l");
760 }
761 if(fMCPtShape) {
5ad8ad40 762 Int_t ci = TColor::GetColor("#9933ff");
763 fMCPtShape->SetLineColor(ci);
764 // fMCPtShape->SetLineColor(8);
0233abe6 765 fMCPtShape->SetLineWidth(3);
766 fMCPtShape->Draw("same");
f968ef30 767 TH1F *hMCPtShapeRefl = ReflectHisto(fMCPtShape);
768 hMCPtShapeRefl->Draw("same");
0233abe6 769 leg->AddEntry(fMCPtShape,"MC p_{t} shape","l");
770 }
771 if(fPartAntipart) {
5ad8ad40 772 Int_t ci = TColor::GetColor("#ff6600");
773 fPartAntipart->SetLineColor(ci);
774 // fPartAntipart->SetLineColor(9);
0233abe6 775 fPartAntipart->SetLineWidth(3);
776 fPartAntipart->Draw("same");
f968ef30 777 TH1F *hPartAntipartRefl = ReflectHisto(fPartAntipart);
778 hPartAntipartRefl->Draw("same");
0233abe6 779 leg->AddEntry(fPartAntipart,"D = #bar{D}","l");
780 }
0233abe6 781
0233abe6 782
783 leg->Draw();
784
5ad8ad40 785 cSystErr->SaveAs("RelativeSystematics.eps");
786
0233abe6 787 return;
788}
f968ef30 789//-------------------------------------------------------------------------
790TH1F* AliHFSystErr::ReflectHisto(TH1F *hin) const {
791 //
792 // Clones and reflects histogram
793 //
794 TH1F *hout=(TH1F*)hin->Clone("hout");
795 hout->Scale(-1.);
796
797 return hout;
798}