]>
Commit | Line | Data |
---|---|---|
3baa4bfd | 1 | #ifndef ALICOMPARISONRES_H |
2 | #define ALICOMPARISONRES_H | |
3 | ||
4 | //------------------------------------------------------------------------------ | |
5 | // Class to keep information from comparison of | |
6 | // reconstructed and MC particle tracks (TPC resolution). | |
7 | // | |
8 | // Author: J.Otwinowski 04/02/2008 | |
9 | //------------------------------------------------------------------------------ | |
10 | ||
11 | class TFile; | |
12 | class AliMCInfo; | |
13 | class AliESDRecInfo; | |
14 | class AliESDEvent; | |
15 | class AliESD; | |
16 | class AliESDfriend; | |
17 | class AliMCInfoCuts; | |
18 | class AliRecInfoCuts; | |
19 | class TH1I; | |
20 | class TH3F; | |
21 | class TH3; | |
22 | class TProfile; | |
23 | class TProfile2D; | |
24 | class TString; | |
25 | class AliESDVertex; | |
26 | ||
27 | #include "TNamed.h" | |
28 | #include "AliComparisonObject.h" | |
29 | ||
30 | class AliComparisonRes : public AliComparisonObject { | |
31 | public : | |
32 | AliComparisonRes(); | |
33 | virtual ~AliComparisonRes(); | |
34 | ||
35 | // Init data members | |
36 | virtual void Init(); | |
37 | ||
38 | // Execute analysis | |
39 | virtual void Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC); | |
40 | ||
41 | // Merge output objects (needed by PROOF) | |
42 | virtual Long64_t Merge(TCollection* list); | |
43 | ||
44 | // Analyse output histograms | |
45 | virtual void Analyse(); | |
46 | ||
47 | // Get analysis folder | |
48 | virtual TFolder* GetAnalysisFolder() {return fAnalysisFolder;} | |
49 | ||
50 | // Process events | |
51 | void ProcessConstrained(AliMCInfo* infoMC, AliESDRecInfo *infoRC); | |
52 | void Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC); | |
53 | ||
54 | // Create folder for analysed histograms | |
55 | TFolder *CreateFolder(TString folder = "folderRes",TString title = "Analysed Resolution histograms"); | |
56 | ||
b4126c69 | 57 | // Export objects to folder |
58 | TFolder *ExportToFolder(TObjArray * array=0); | |
59 | ||
3baa4bfd | 60 | // Selection cuts |
61 | void SetAliRecInfoCuts(AliRecInfoCuts* cuts=0) {fCutsRC = cuts;} | |
62 | void SetAliMCInfoCuts(AliMCInfoCuts* cuts=0) {fCutsMC = cuts;} | |
63 | ||
64 | AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;} | |
65 | AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;} | |
66 | ||
67 | static TH1F* MakeResol(TH2F * his, Int_t integ, Bool_t type); | |
68 | ||
35771050 | 69 | // getters |
70 | TH3F *GetMCVertex() { return fMCVertex; } | |
71 | TH3F *GetRecVertex() { return fRecVertex; } | |
72 | ||
73 | TH3F *GetPhiTanPtTPC() { return fPhiTanPtTPC; } | |
74 | TH3F *GetPhiTanPtTPCITS() { return fPhiTanPtTPCITS; } | |
75 | ||
76 | TH2F *GetPtResolTPC() { return fPtResolTPC; } | |
77 | TH2F *GetPtPullTPC() { return fPtPullTPC; } | |
78 | TH2F *GetPhiResolTanTPC() { return fPhiResolTanTPC; } | |
79 | TH2F *GetTanResolTanTPC() { return fTanResolTanTPC; } | |
80 | TH2F *GetPhiPullTanTPC() { return fPhiPullTanTPC; } | |
81 | TH2F *GetTanPullTanTPC() { return fTanPullTanTPC; } | |
82 | ||
83 | TH2F *GetPtResolTPCITS() { return fPtResolTPCITS; } | |
84 | TH2F *GetPtPullTPCITS() { return fPtPullTPCITS; } | |
85 | TH2F *GetPhiResolTanTPCITS() { return fPhiResolTanTPCITS; } | |
86 | TH2F *GetTanResolTanTPCITS() { return fTanResolTanTPCITS; } | |
87 | TH2F *GetPhiPullTanTPCITS() { return fPhiPullTanTPCITS; } | |
88 | TH2F *GetTanPullTanTPCITS() { return fTanPullTanTPCITS; } | |
89 | ||
90 | // | |
91 | // Resolution constrained param | |
92 | // | |
93 | TH2F *GetCPhiResolTan() { return fCPhiResolTan; } | |
94 | TH2F *GetCTanResolTan() { return fCTanResolTan; } | |
95 | TH2F *GetCPtResolTan() { return fCPtResolTan; } | |
96 | TH2F *GetCPhiPullTan() { return fCPhiPullTan; } | |
97 | TH2F *GetCTanPullTan() { return fCTanPullTan; } | |
98 | TH2F *GetCPtPullTan() { return fCPtPullTan; } | |
99 | ||
100 | // | |
101 | // Histograms for track resolution parameterisation | |
102 | // | |
103 | TH2F *Get1Pt2ResolS1PtTPC() { return f1Pt2ResolS1PtTPC; } | |
104 | TH2F *Get1Pt2ResolS1PtTPCITS() { return f1Pt2ResolS1PtTPCITS; } | |
105 | TH2F *GetYResolS1PtTPC() { return fYResolS1PtTPC; } | |
106 | TH2F *GetYResolS1PtTPCITS() { return fYResolS1PtTPCITS; } | |
107 | TH2F *GetZResolS1PtTPC() { return fZResolS1PtTPC; } | |
108 | TH2F *GetZResolS1PtTPCITS() { return fZResolS1PtTPCITS; } | |
109 | TH2F *GetPhiResolS1PtTPC() { return fPhiResolS1PtTPC; } | |
110 | TH2F *GetPhiResolS1PtTPCITS() { return fPhiResolS1PtTPCITS; } | |
111 | TH2F *GetThetaResolS1PtTPC() { return fThetaResolS1PtTPC; } | |
112 | TH2F *GetThetaResolS1PtTPCITS(){ return fThetaResolS1PtTPCITS; } | |
113 | ||
114 | // constrained | |
115 | // | |
116 | TH2F *GetC1Pt2ResolS1PtTPC() { return fC1Pt2ResolS1PtTPC; } | |
117 | TH2F *GetC1Pt2ResolS1PtTPCITS() { return fC1Pt2ResolS1PtTPCITS; } | |
118 | TH2F *GetCYResolS1PtTPC() { return fCYResolS1PtTPC; } | |
119 | TH2F *GetCYResolS1PtTPCITS() { return fCYResolS1PtTPCITS; } | |
120 | TH2F *GetCZResolS1PtTPC() { return fCZResolS1PtTPC; } | |
121 | TH2F *GetCZResolS1PtTPCITS() { return fCZResolS1PtTPCITS; } | |
122 | TH2F *GetCPhiResolS1PtTPC() { return fCPhiResolS1PtTPC; } | |
123 | TH2F *GetCPhiResolS1PtTPCITS() { return fCPhiResolS1PtTPCITS; } | |
124 | TH2F *GetCThetaResolS1PtTPC() { return fCThetaResolS1PtTPC; } | |
125 | TH2F *GetCThetaResolS1PtTPCITS(){ return fCThetaResolS1PtTPCITS; } | |
3baa4bfd | 126 | |
127 | private: | |
128 | // | |
129 | // Control histograms | |
130 | // | |
35771050 | 131 | |
132 | TH3F *fMCVertex; //-> MC primary vertex | |
133 | TH3F *fRecVertex; //-> Reconstructed primary vertex | |
134 | ||
135 | TH3F *fPhiTanPtTPC; //-> phi vs tantheta vs pt | |
136 | TH3F *fPhiTanPtTPCITS; //-> phi vs tantheta vs pt | |
137 | ||
138 | // TPC only | |
139 | TH2F *fPtResolTPC; //-> pt resolution | |
140 | TH2F *fPtPullTPC; //-> pt pull | |
141 | TH2F *fPhiResolTanTPC; //-> angular resolution | |
142 | TH2F *fTanResolTanTPC; //-> angular resolution | |
143 | TH2F *fPhiPullTanTPC; //-> angular resolution | |
144 | TH2F *fTanPullTanTPC; //-> angular resolution | |
145 | ||
146 | // TPC+ITS | |
147 | TH2F *fPtResolTPCITS; //-> pt resolution | |
148 | TH2F *fPtPullTPCITS; //-> pt pull | |
149 | TH2F *fPhiResolTanTPCITS; //-> angular resolution | |
150 | TH2F *fTanResolTanTPCITS; //-> angular resolution | |
151 | TH2F *fPhiPullTanTPCITS; //-> angular resolution | |
152 | TH2F *fTanPullTanTPCITS; //-> angular resolution | |
3baa4bfd | 153 | |
154 | // | |
155 | // Resolution constrained param | |
156 | // | |
157 | TH2F *fCPhiResolTan; //-> angular resolution - constrained | |
158 | TH2F *fCTanResolTan; //-> angular resolution - constrained | |
159 | TH2F *fCPtResolTan; //-> pt resolution - constrained | |
160 | TH2F *fCPhiPullTan; //-> angular resolution - constrained | |
161 | TH2F *fCTanPullTan; //-> angular resolution - constrained | |
162 | TH2F *fCPtPullTan; //-> pt resolution - constrained | |
163 | ||
164 | // | |
165 | // Histograms for track resolution parameterisation | |
166 | // | |
167 | ||
168 | TH2F* f1Pt2ResolS1PtTPC; //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC) | |
169 | TH2F* f1Pt2ResolS1PtTPCITS; //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS) | |
170 | TH2F* fYResolS1PtTPC; //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) | |
171 | TH2F* fYResolS1PtTPCITS; //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) | |
172 | TH2F* fZResolS1PtTPC; //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC) | |
173 | TH2F* fZResolS1PtTPCITS; //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
174 | TH2F* fPhiResolS1PtTPC; //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC) | |
175 | TH2F* fPhiResolS1PtTPCITS; //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
176 | TH2F* fThetaResolS1PtTPC; //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC) | |
177 | TH2F* fThetaResolS1PtTPCITS; //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
178 | ||
179 | // constrained | |
180 | TH2F* fC1Pt2ResolS1PtTPC; //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC) | |
181 | TH2F* fC1Pt2ResolS1PtTPCITS; //-> (1/mcpt-1/pt)/(1+1/pt)^2 vs sqrt(1/pt) (TPC+ITS) | |
182 | TH2F* fCYResolS1PtTPC; //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC) | |
183 | TH2F* fCYResolS1PtTPCITS; //-> (mcy-y)/(0.2+1/pt) vs sqrt(1/pt) (TPC + ITS) | |
184 | TH2F* fCZResolS1PtTPC; //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC) | |
185 | TH2F* fCZResolS1PtTPCITS; //-> (mcz-z)/(0.2+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
186 | TH2F* fCPhiResolS1PtTPC; //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC) | |
187 | TH2F* fCPhiResolS1PtTPCITS; //-> (mcphi-phi)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
188 | TH2F* fCThetaResolS1PtTPC; //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC) | |
189 | TH2F* fCThetaResolS1PtTPCITS; //-> (mctheta-theta)/(0.1+1/pt) vs sqrt(1/pt) (TPC+ITS) | |
190 | ||
3baa4bfd | 191 | // Global cuts objects |
192 | AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks | |
193 | AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks | |
194 | ||
195 | // analysis folder | |
196 | TFolder *fAnalysisFolder; // folder for analysed histograms | |
197 | ||
198 | AliComparisonRes(const AliComparisonRes&); // not implemented | |
199 | AliComparisonRes& operator=(const AliComparisonRes&); // not implemented | |
200 | ||
201 | ClassDef(AliComparisonRes,1); | |
202 | }; | |
203 | ||
204 | #endif |