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