1cad7456 |
1 | #ifndef ALIHFSYSTERR_H |
2 | #define ALIHFSYSTERR_H |
3 | /* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ |
5 | |
27de2dfb |
6 | /* $Id$ */ |
7 | |
1cad7456 |
8 | //*********************************************************** |
9 | // Class AliRDHFSystErr |
10 | // to handle systematic errors for charm hadrons |
11 | // Author: A.Dainese, andrea.dainese@pd.infn.it |
12 | //*********************************************************** |
13 | |
14 | #include <TNamed.h> |
aebba8df |
15 | #include <TString.h> |
1cad7456 |
16 | #include <TH1F.h> |
5541b811 |
17 | #include "AliLog.h" |
8998180c |
18 | #include "TGraphAsymmErrors.h" |
1cad7456 |
19 | |
20 | |
21 | class AliHFSystErr : public TNamed |
22 | { |
23 | public: |
24 | |
25 | AliHFSystErr(const Char_t* name="HFSystErr", const Char_t* title=""); |
1cad7456 |
26 | |
27 | virtual ~AliHFSystErr(); |
28 | |
8998180c |
29 | void DrawErrors(TGraphAsymmErrors *grErrFeeddown=0) const; |
1cad7456 |
30 | |
31 | Double_t GetNormErr() const {return (fNorm ? fNorm->GetBinContent(0) : 0.);} |
32 | Double_t GetBRErr() const {return (fBR ? fBR->GetBinContent(0) : 0.);} |
33 | Double_t GetCutsEffErr(Double_t pt) const; |
34 | Double_t GetMCPtShapeErr(Double_t pt) const; |
35 | Double_t GetSeleEffErr(Double_t pt) const; |
36 | Double_t GetPartAntipartErr(Double_t pt) const; |
37 | Double_t GetPIDEffErr(Double_t pt) const; |
38 | Double_t GetRawYieldErr(Double_t pt) const; |
39 | Double_t GetTrackingEffErr(Double_t pt) const; |
40 | Double_t GetTotalSystErr(Double_t pt,Double_t feeddownErr=0) const; |
41 | |
5541b811 |
42 | // Setting the run number |
43 | // set the two last numbers of the year (is 10 for 2010) |
44 | void SetRunNumber(Int_t number) { |
45 | fRunNumber = number; |
46 | AliInfo(Form(" Settings for run year 20%2d",fRunNumber)); |
47 | } |
48 | // Setting the collision type |
49 | // 0 is pp, 1 is PbPb |
50 | void SetCollisionType(Int_t type) { |
51 | fCollisionType = type; |
52 | if (fCollisionType==0) { AliInfo(" Settings for p-p collisions"); } |
53 | else if(fCollisionType==1) { AliInfo(" Settings for Pb-Pb collisions"); } |
54 | } |
55 | // Setting for the centrality class |
56 | // 0100 for MB, 020 (4080) for 0-20 (40-80) CC and so on |
aebba8df |
57 | void SetCentrality(TString centrality) { |
5541b811 |
58 | fCentralityClass = centrality; |
aebba8df |
59 | AliInfo(Form(" Settings for centrality class %s",fCentralityClass.Data())); |
5541b811 |
60 | } |
a8c3295d |
61 | void SetIsLowEnergy(Bool_t flag) { |
62 | fIsLowEnergy = flag; |
63 | AliInfo(" Settings for the low energy run"); |
64 | } |
cede55f5 |
65 | void SetIsPbPb2010EnergyScan(Bool_t flag) { |
66 | fIsCentScan = flag; |
67 | AliInfo(" Settings for the PbPb 2010 energy scan"); |
68 | } |
5541b811 |
69 | |
70 | // Function to initialize the variables/histograms |
71 | void Init(Int_t decay); |
1cad7456 |
72 | |
414bc6a5 |
73 | void InitD0toKpi2010PbPb010CentScan(); |
74 | void InitD0toKpi2010PbPb1020CentScan(); |
75 | void InitD0toKpi2010PbPb2040CentScan(); |
76 | void InitD0toKpi2010PbPb4060CentScan(); |
77 | void InitD0toKpi2010PbPb6080CentScan(); |
78 | |
79 | void InitDplustoKpipi2010PbPb010CentScan(); |
80 | void InitDplustoKpipi2010PbPb1020CentScan(); |
81 | void InitDplustoKpipi2010PbPb2040CentScan(); |
82 | void InitDplustoKpipi2010PbPb4060CentScan(); |
83 | void InitDplustoKpipi2010PbPb6080CentScan(); |
84 | |
85 | void InitDstartoD0pi2010PbPb010CentScan(); |
86 | void InitDstartoD0pi2010PbPb1020CentScan(); |
87 | void InitDstartoD0pi2010PbPb2040CentScan(); |
88 | void InitDstartoD0pi2010PbPb4060CentScan(); |
89 | void InitDstartoD0pi2010PbPb6080CentScan(); |
90 | |
1cad7456 |
91 | private: |
92 | |
93 | AliHFSystErr(const AliHFSystErr& source); |
94 | AliHFSystErr& operator=(const AliHFSystErr& source); |
95 | |
5541b811 |
96 | void InitD0toKpi2010pp(); |
97 | void InitDplustoKpipi2010pp(); |
98 | void InitDstartoD0pi2010pp(); |
66247513 |
99 | void InitDstoKKpi2010pp(); |
5541b811 |
100 | |
101 | void InitD0toKpi2010PbPb020(); |
102 | void InitDplustoKpipi2010PbPb020(); |
103 | void InitDstartoD0pi2010PbPb020(); |
104 | |
105 | void InitD0toKpi2010PbPb4080(); |
106 | void InitDplustoKpipi2010PbPb4080(); |
107 | void InitDstartoD0pi2010PbPb4080(); |
1cad7456 |
108 | |
414bc6a5 |
109 | |
a8c3295d |
110 | void InitD0toKpi2010ppLowEn(); |
111 | void InitDplustoKpipi2010ppLowEn(); |
414bc6a5 |
112 | void InitDstartoD0pi2010ppLowEn(); |
a8c3295d |
113 | |
cede55f5 |
114 | void InitDstartoD0pi2010PbPb2040(); |
1cad7456 |
115 | |
f968ef30 |
116 | TH1F* ReflectHisto(TH1F *hin) const; |
117 | |
1cad7456 |
118 | TH1F *fNorm; // normalization |
119 | TH1F *fRawYield; // raw yield |
120 | TH1F *fTrackingEff; // tracking efficiency |
121 | TH1F *fBR; // branching ratio |
122 | TH1F *fCutsEff; // cuts efficiency |
123 | TH1F *fPIDEff; // PID efficiency |
124 | TH1F *fMCPtShape; // MC dNdpt |
125 | TH1F *fPartAntipart; // particle=antiparticle |
126 | |
5541b811 |
127 | Int_t fRunNumber; // Run Number (year) |
128 | Int_t fCollisionType; // Collision type: pp=0, PbPb=1 |
aebba8df |
129 | TString fCentralityClass; // Centrality class |
5541b811 |
130 | // MB:0100, 0-10:010, 0-20:020 ...40-80:4080... |
a8c3295d |
131 | Bool_t fIsLowEnergy; // flag for the low energy (2.76TeV) run |
cede55f5 |
132 | Bool_t fIsCentScan; // flag fot the PbPb centrality scan |
5541b811 |
133 | |
cede55f5 |
134 | ClassDef(AliHFSystErr,4); // class for systematic errors of charm hadrons |
1cad7456 |
135 | }; |
136 | |
137 | #endif |
138 | |