]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/AliComparisonEff.cxx
Makin compiled macro
[u/mrichter/AliRoot.git] / PWG1 / AliComparisonEff.cxx
CommitLineData
6d1c79ca 1//------------------------------------------------------------------------------\r
2// Implementation of AliComparisonEff class. It keeps information from \r
3// comparison of reconstructed and MC particle tracks. In addtion, \r
4// it keeps selection cuts used during comparison. The comparison \r
5// information is stored in the ROOT histograms. Analysis of these \r
6// histograms can be done by using Analyse() class function. The result of \r
3baa4bfd 7// the analysis (histograms/graphs) are stored in the folder which is \r
8// a data member of AliComparisonEff.\r
9// \r
6d1c79ca 10// Author: J.Otwinowski 04/02/2008 \r
11//------------------------------------------------------------------------------\r
12\r
13/*\r
3baa4bfd 14 \r
15 // after running comparison task, read the file, and get component\r
b4126c69 16 gROOT->LoadMacro("$ALICE_ROOT/PWG1/Macros/LoadMyLibs.C");\r
17 LoadMyLibs();\r
6d1c79ca 18 TFile f("Output.root");\r
35771050 19 //AliComparisonEff * compObj = (AliComparisonEff*)f.Get("AliComparisonEff");\r
20 AliComparisonEff * compObj = (AliComparisonEff*)cOutput->FindObject("AliComparisonEff");\r
6d1c79ca 21\r
b4126c69 22 // Analyse comparison data\r
3baa4bfd 23 compObj->Analyse();\r
24\r
25 // the output histograms/graphs will be stored in the folder "folderEff" \r
26 compObj->GetAnalysisFolder()->ls("*");\r
27\r
28 // user can save whole comparison object (or only folder with anlysed histograms) \r
29 // in the seperate output file (e.g.)\r
30 TFile fout("Analysed_Eff.root","recreate");\r
31 compObj->Write(); // compObj->GetAnalysisFolder()->Write();\r
32 fout.Close();\r
6d1c79ca 33\r
6d1c79ca 34*/\r
35\r
36\r
37#include <iostream>\r
38\r
39#include "TFile.h"\r
40#include "TCint.h"\r
41#include "TH3F.h"\r
42#include "TH2F.h"\r
43#include "TF1.h"\r
44#include "TProfile.h"\r
45#include "TProfile2D.h"\r
46#include "TGraph2D.h"\r
47#include "TCanvas.h"\r
48#include "TGraph.h"\r
49// \r
50#include "AliESDEvent.h" \r
51#include "AliESD.h"\r
52#include "AliESDfriend.h"\r
53#include "AliESDfriendTrack.h"\r
54#include "AliRecInfoCuts.h" \r
55#include "AliMCInfoCuts.h" \r
56#include "AliLog.h" \r
57//\r
58#include "AliMathBase.h"\r
59#include "AliTreeDraw.h" \r
f7a1cc68 60#include "AliMagF.h" \r
6d1c79ca 61#include "AliESDVertex.h" \r
62#include "AliExternalTrackParam.h" \r
63#include "AliTracker.h" \r
64\r
65#include "AliMCInfo.h" \r
66#include "AliESDRecInfo.h" \r
67#include "AliComparisonEff.h" \r
68\r
69using namespace std;\r
70\r
71\r
72ClassImp(AliComparisonEff)\r
73\r
74//_____________________________________________________________________________\r
75AliComparisonEff::AliComparisonEff():\r
3baa4bfd 76 AliComparisonObject("AliComparisonEff"),\r
6d1c79ca 77\r
78 // histograms\r
79 \r
80 fMCPt(0),\r
81 fMCRecPt(0),\r
82 fMCRecPrimPt(0),\r
83 fMCRecSecPt(0),\r
84\r
85 fEffTPCPt(0),\r
86 fEffTPCPtMC(0),\r
87 fEffTPCPtF(0),\r
88 //\r
89 fEffTPCPt_P(0),\r
90 fEffTPCPtMC_P(0),\r
91 fEffTPCPtF_P(0),\r
92 //\r
93 fEffTPCPt_Pi(0),\r
94 fEffTPCPtMC_Pi(0),\r
95 fEffTPCPtF_Pi(0),\r
96 //\r
97 fEffTPCPt_K(0),\r
98 fEffTPCPtMC_K(0),\r
99 fEffTPCPtF_K(0),\r
100 \r
101 fEffTPCTan(0),\r
102 fEffTPCTanMC(0),\r
103 fEffTPCTanF(0),\r
104 //\r
105 fEffTPCPtTan(0),\r
106 fEffTPCPtTanMC(0),\r
107 fEffTPCPtTanF(0),\r
35771050 108 // TPC+ITS\r
109 fEffTPCITSPt(0),\r
110 fEffTPCITSTan(0),\r
6d1c79ca 111\r
112 // Cuts \r
113 fCutsRC(0), \r
114 fCutsMC(0),\r
115\r
3baa4bfd 116 fVertex(0),\r
117\r
118 // histogram folder \r
119 fAnalysisFolder(0)\r
6d1c79ca 120{\r
121 // init vertex\r
122 fVertex = new AliESDVertex();\r
123 fVertex->SetXv(0.0); fVertex->SetYv(0.0); fVertex->SetZv(0.0); \r
124\r
125 for(Int_t i=0; i<4; ++i)\r
126 {\r
127 fTPCPtDCASigmaIdeal[i]=0;\r
128 fTPCPtDCASigmaFull[i]=0;\r
129 fTPCPtDCASigmaDay0[i]=0;\r
130\r
131 fTPCPtDCAXY[i]=0;\r
132 fTPCPtDCAZ[i]=0;\r
133\r
134 fTPCPtDCASigmaIdealPid[i]=0;\r
135 fTPCPtDCASigmaFullPid[i]=0;\r
136 fTPCPtDCASigmaDay0Pid[i]=0;\r
137\r
138 fTPCPtDCAXYPid[i]=0; \r
139 fTPCPtDCAZPid[i]=0; \r
140 }\r
b4126c69 141\r
3baa4bfd 142 Init();\r
6d1c79ca 143}\r
144\r
145//_____________________________________________________________________________\r
146AliComparisonEff::~AliComparisonEff(){\r
147\r
148 // \r
3baa4bfd 149 if(fMCPt) delete fMCPt; fMCPt=0;\r
6d1c79ca 150 if(fMCRecPt) delete fMCRecPt; fMCRecPt=0;\r
151 if(fMCRecPrimPt) delete fMCRecPrimPt; fMCRecPrimPt=0;\r
152 if(fMCRecSecPt) delete fMCRecSecPt; fMCRecSecPt=0;\r
153\r
154 // \r
155 if(fEffTPCPt) delete fEffTPCPt; fEffTPCPt=0;\r
156 if(fEffTPCPtMC) delete fEffTPCPtMC; fEffTPCPtMC=0;\r
157 if(fEffTPCPtF) delete fEffTPCPtF; fEffTPCPtF=0;\r
158\r
159 // \r
160 if(fEffTPCPt_P) delete fEffTPCPt_P; fEffTPCPt_P=0;\r
161 if(fEffTPCPtMC_P) delete fEffTPCPtMC_P; fEffTPCPtMC_P=0;\r
162 if(fEffTPCPtF_P) delete fEffTPCPtF_P; fEffTPCPtF_P=0;\r
163\r
164 // \r
165 if(fEffTPCPt_Pi) delete fEffTPCPt_Pi; fEffTPCPt_Pi=0;\r
166 if(fEffTPCPtMC_Pi) delete fEffTPCPtMC_Pi; fEffTPCPtMC_Pi=0;\r
167 if(fEffTPCPtF_Pi) delete fEffTPCPtF_Pi; fEffTPCPtF_Pi=0;\r
168\r
169 // \r
170 if(fEffTPCPt_K) delete fEffTPCPt_K; fEffTPCPt_K=0;\r
171 if(fEffTPCPtMC_K) delete fEffTPCPtMC_K; fEffTPCPtMC_K=0;\r
172 if(fEffTPCPtF_K) delete fEffTPCPtF_K; fEffTPCPtF_K=0;\r
173\r
174 // \r
175 if(fEffTPCTan) delete fEffTPCTan; fEffTPCTan=0;\r
176 if(fEffTPCTanMC) delete fEffTPCTanMC; fEffTPCTanMC=0;\r
177 if(fEffTPCTanF) delete fEffTPCTanF; fEffTPCTanF=0;\r
178\r
179 //\r
180 if(fEffTPCPtTan) delete fEffTPCPtTan; fEffTPCPtTan=0;\r
181 if(fEffTPCPtTanMC) delete fEffTPCPtTanMC; fEffTPCPtTanMC=0;\r
182 if(fEffTPCPtTanF) delete fEffTPCPtTanF; fEffTPCPtTanF=0;\r
183\r
35771050 184 if(fEffTPCITSPt) delete fEffTPCITSPt; fEffTPCITSPt=0;\r
185 if(fEffTPCITSTan) delete fEffTPCITSTan; fEffTPCITSTan=0;\r
186\r
6d1c79ca 187 for(Int_t i=0; i<4; ++i)\r
188 {\r
189 if(fTPCPtDCASigmaIdeal[i]) delete fTPCPtDCASigmaIdeal[i]; fTPCPtDCASigmaIdeal[i]=0;\r
190 if(fTPCPtDCASigmaFull[i]) delete fTPCPtDCASigmaFull[i]; fTPCPtDCASigmaFull[i]=0;\r
191 if(fTPCPtDCASigmaDay0[i]) delete fTPCPtDCASigmaDay0[i]; fTPCPtDCASigmaDay0[i]=0;\r
192\r
193 if(fTPCPtDCAXY[i]) delete fTPCPtDCAXY[i]; fTPCPtDCAXY[i]=0;\r
194 if(fTPCPtDCAZ[i]) delete fTPCPtDCAZ[i]; fTPCPtDCAZ[i]=0;\r
195\r
196 if(fTPCPtDCASigmaIdealPid[i]) delete fTPCPtDCASigmaIdealPid[i]; fTPCPtDCASigmaIdealPid[i]=0;\r
197 if(fTPCPtDCASigmaFullPid[i]) delete fTPCPtDCASigmaFullPid[i]; fTPCPtDCASigmaFullPid[i]=0;\r
198 if(fTPCPtDCASigmaDay0Pid[i]) delete fTPCPtDCASigmaDay0Pid[i]; fTPCPtDCASigmaDay0Pid[i]=0;\r
199\r
200 if(fTPCPtDCAXYPid[i]) delete fTPCPtDCAXYPid[i]; fTPCPtDCAXYPid[i]=0;\r
201 if(fTPCPtDCAZPid[i]) delete fTPCPtDCAZPid[i]; fTPCPtDCAZPid[i]=0;\r
202 }\r
3baa4bfd 203\r
204 if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0;\r
6d1c79ca 205}\r
206\r
207//_____________________________________________________________________________\r
3baa4bfd 208void AliComparisonEff::Init(){\r
6d1c79ca 209\r
210 // Init histograms\r
211 //\r
212 fMCPt = new TH1F("fMCPt","fMCPt",50,0.1,3); \r
213 fMCPt->SetXTitle("p_{t}");\r
214 fMCPt->SetYTitle("yield");\r
215\r
216 fMCRecPt = new TH1F("fMCRecPt","fMCRecPt",50,0.1,3); \r
217 fMCRecPt->SetXTitle("p_{t}");\r
218 fMCRecPt->SetYTitle("yield");\r
219\r
220 fMCRecPrimPt = new TH1F("fMCRecPrimPt","fMCRecPrimPt",50,0.1,3); \r
221 fMCRecPrimPt->SetXTitle("p_{t}");\r
222 fMCRecPrimPt->SetYTitle("yield");\r
223\r
224 fMCRecSecPt = new TH1F("fMCRecSecPt","fMCRecSecPt",50,0.1,3); \r
225 fMCRecSecPt->SetXTitle("p_{t}");\r
226 fMCRecSecPt->SetYTitle("yield");\r
227\r
228 // Efficiency as function of pt\r
229 fEffTPCPt = new TProfile("Eff_pt","Eff_Pt",50,0.1,3); \r
230 fEffTPCPt->SetXTitle("p_{t}");\r
231 fEffTPCPt->SetYTitle("TPC Efficiency");\r
232\r
35771050 233// Efficiency as function of pt (TPC+ITS)\r
234 fEffTPCITSPt = new TProfile("Eff_pt_TPCITS","Eff_Pt_TPCITS",50,0.1,3); \r
235 fEffTPCITSPt->SetXTitle("p_{t}");\r
236 fEffTPCITSPt->SetYTitle("TPCITS Efficiency");\r
237\r
238\r
6d1c79ca 239 fEffTPCPtMC = new TProfile("MC_Eff_pt","MC_Eff_Pt",50,0.1,3); \r
240 fEffTPCPtMC->SetXTitle("p_{t}");\r
241 fEffTPCPtMC->SetYTitle("MC TPC Efficiency");\r
242\r
243 fEffTPCPtF = new TProfile("F_Eff_pt","F_Eff_Pt",50,0.1,3); \r
244 fEffTPCPtF->SetXTitle("p_{t}");\r
245 fEffTPCPtF->SetYTitle("TPC Findable Efficiency");\r
246\r
247 // Efficiency as function of pt protons\r
248 fEffTPCPt_P = new TProfile("Eff_pt_P","Eff_Pt_P",50,0.1,3); \r
249 fEffTPCPt_P->SetXTitle("p_{t}");\r
250 fEffTPCPt_P->SetYTitle("TPC Efficiency");\r
251\r
252 fEffTPCPtMC_P = new TProfile("MC_Eff_pt_P","MC_Eff_Pt_P",50,0.1,3); \r
253 fEffTPCPtMC_P->SetXTitle("p_{t}");\r
254 fEffTPCPtMC_P->SetYTitle("MC TPC Efficiency");\r
255\r
256 fEffTPCPtF_P = new TProfile("F_Eff_pt_P","F_Eff_Pt_P",50,0.1,3); \r
257 fEffTPCPtF_P->SetXTitle("p_{t}");\r
258 fEffTPCPtF_P->SetYTitle("TPC Findable Efficiency");\r
259\r
260 // Efficiency as function of pt pions\r
261 fEffTPCPt_Pi = new TProfile("Eff_pt_Pi","Eff_Pit_Pi",50,0.1,3); \r
262 fEffTPCPt_Pi->SetXTitle("p_{t}");\r
263 fEffTPCPt_Pi->SetYTitle("TPC Efficiency");\r
264\r
265 fEffTPCPtMC_Pi = new TProfile("MC_Eff_pt_Pi","MC_Eff_Pit_Pi",50,0.1,3); \r
266 fEffTPCPtMC_Pi->SetXTitle("p_{t}");\r
267 fEffTPCPtMC_Pi->SetYTitle("MC TPC Efficiency");\r
268\r
269 fEffTPCPtF_Pi = new TProfile("F_Eff_pt_Pi","F_Eff_Pit_Pi",50,0.1,3); \r
270 fEffTPCPtF_Pi->SetXTitle("p_{t}");\r
271 fEffTPCPtF_Pi->SetYTitle("TPC Findable Efficiency");\r
272\r
273 // Efficiency as function of pt kaons\r
274 fEffTPCPt_K = new TProfile("Eff_pt_K","Eff_Kt_K",50,0.1,3); \r
275 fEffTPCPt_K->SetXTitle("p_{t}");\r
276 fEffTPCPt_K->SetYTitle("TPC Efficiency");\r
277\r
278 fEffTPCPtMC_K = new TProfile("MC_Eff_pt_K","MC_Eff_Kt_K",50,0.1,3); \r
279 fEffTPCPtMC_K->SetXTitle("p_{t}");\r
280 fEffTPCPtMC_K->SetYTitle("MC TPC Efficiency");\r
281\r
282 fEffTPCPtF_K = new TProfile("F_Eff_pt_K","F_Eff_Kt_K",50,0.1,3); \r
283 fEffTPCPtF_K->SetXTitle("p_{t}");\r
284 fEffTPCPtF_K->SetYTitle("TPC Findable Efficiency");\r
285\r
286 // Efficiency as function of tan(theta) \r
287 fEffTPCTan = new TProfile("Eff_tan","Eff_tan",50,-2.5,2.5); \r
288 fEffTPCTan->SetXTitle("tan(#theta)");\r
289 fEffTPCTan->SetYTitle("TPC Efficiency");\r
290\r
35771050 291// Efficiency as function of tan(theta) (TPC+ITS)\r
292 fEffTPCITSTan = new TProfile("Eff_tan_TPCITS","Eff_tan_TPCITS",50,-2.5,2.5); \r
293 fEffTPCITSTan->SetXTitle("tan(#theta)");\r
294 fEffTPCITSTan->SetYTitle("TPCITS Efficiency");\r
295\r
296\r
6d1c79ca 297 fEffTPCTanMC = new TProfile("MC_Eff_tan","MC_Eff_tan",50,-2.5,2.5); \r
298 fEffTPCTanMC->SetXTitle("tan(#theta)");\r
299 fEffTPCTanMC->SetYTitle("MC TPC Efficiency");\r
300\r
301 fEffTPCTanF = new TProfile("F_Eff_tan","F_Eff_tan",50,-2.5,2.5); \r
302 fEffTPCPtF->SetXTitle("tan(#theta)");\r
303 fEffTPCPtF->SetYTitle("TPC Findable Efficiency");\r
304\r
305 // Efficiency as function of pt and tan(theta) \r
306 fEffTPCPtTan = new TProfile2D("Eff_pt_tan","Eff_Pt_tan",10,0.1,3,20,-2.,2.);\r
307 fEffTPCPtTan->SetXTitle("tan(#theta)");\r
308 fEffTPCPtTan->SetYTitle("p_{t}");\r
309\r
310 fEffTPCPtTanMC = new TProfile2D("MC_Eff_pt_tan_MC","MC Eff Pt",10,0.1,3,20,-2.,2.);\r
311 fEffTPCPtTanMC->SetXTitle("tan(#theta)");\r
312 fEffTPCPtTanMC->SetYTitle("p_{t}");\r
313\r
314 fEffTPCPtTanF = new TProfile2D("MC_Eff_pt_tan_F","MC Eff Pt",10,0.1,3,20,-2.,2.);\r
315 fEffTPCPtTanF->SetXTitle("tan(#theta)");\r
316 fEffTPCPtTanF->SetYTitle("p_{t}");\r
317\r
318 char name[256];\r
319 for(Int_t i=0; i<4; ++i)\r
320 {\r
321 sprintf(name, "fTPCPtDCASigmaIdeal_%d",i);\r
322 fTPCPtDCASigmaIdeal[i] = new TH2F(name,name,50,0.1,3,100,0,100);\r
323\r
324 sprintf(name, "fTPCPtDCASigmaFull_%d",i);\r
325 fTPCPtDCASigmaFull[i] = new TH2F(name,name,50,0.1,3,100,0,100);\r
326\r
327 sprintf(name, "fTPCPtDCASigmaDay0_%d",i);\r
328 fTPCPtDCASigmaDay0[i] = new TH2F(name,name,50,0.1,3,100,0,100);\r
329\r
330 sprintf(name, "fTPCPtDCAXY_%d",i);\r
331 fTPCPtDCAXY[i]= new TH2F(name,name,50,0.1,3,100,0,100);\r
332 sprintf(name, "fTPCPtDCAZ_%d",i);\r
333 fTPCPtDCAZ[i]= new TH2F(name,name,50,0.1,3,100,0,100);\r
334\r
335 sprintf(name, "fTPCPtDCASigmaIdealPid_%d",i);\r
336 fTPCPtDCASigmaIdealPid[i] = new TH3F(name,name,50,0.1,3,100,0,100,5,0,5);\r
337\r
338 sprintf(name, "fTPCPtDCASigmaFullPid_%d",i);\r
339 fTPCPtDCASigmaFullPid[i]= new TH3F(name,name,50,0.1,3,100,0,100,5,0,5);\r
340\r
341 sprintf(name, "fTPCPtDCASigmaDay0Pid_%d",i);\r
342 fTPCPtDCASigmaDay0Pid[i]= new TH3F(name,name,50,0.1,3,100,0,100,5,0,5);\r
343\r
344 sprintf(name, "fTPCPtDCAXYPid_%d",i);\r
345 fTPCPtDCAXYPid[i]= new TH3F(name,name,50,0.1,3,100,0,100,5,0,5);\r
346\r
347 sprintf(name, "fTPCPtDCAZPid_%d",i);\r
348 fTPCPtDCAZPid[i]= new TH3F(name,name,50,0.1,3,100,0,100,5,0,5);\r
349 }\r
6d1c79ca 350\r
3baa4bfd 351 // init cuts\r
6d1c79ca 352 if(!fCutsMC) \r
353 AliDebug(AliLog::kError, "ERROR: Cannot find AliMCInfoCuts object");\r
354 if(!fCutsRC) \r
355 AliDebug(AliLog::kError, "ERROR: Cannot find AliRecInfoCuts object");\r
3baa4bfd 356\r
357 // init folder\r
358 fAnalysisFolder = CreateFolder("folderEff","Analysis Efficiency Folder");\r
6d1c79ca 359}\r
360\r
361//_____________________________________________________________________________\r
362void AliComparisonEff::Process(AliMCInfo* infoMC, AliESDRecInfo *infoRC)\r
363{\r
364 // Fill efficiency comparison information\r
365 \r
366 AliExternalTrackParam *track = 0;\r
6d1c79ca 367 Double_t field = AliTracker::GetBz(); // nominal Bz field [kG]\r
368 Double_t kMaxD = 123456.0; // max distance\r
35771050 369 Int_t clusterITS[200];\r
6d1c79ca 370\r
371 // systematics\r
372 const Double_t kSigma2Full_xy = 0.25; // ExB full systematics [cm]\r
b4126c69 373 const Double_t kSigma2Full_z = 5.0; // drift velocity (goofie) [cm] \r
6d1c79ca 374\r
375 const Double_t kSigma2Day0_xy = 0.02; // ExB [cm]\r
35771050 376 const Double_t kSigma2Day0_z = 0.1; // drift velocity (goofie) [cm] \r
6d1c79ca 377\r
378 // \r
35771050 379 Double_t DCASigmaIdeal=0;\r
6d1c79ca 380 Double_t DCASigmaFull=0;\r
381 Double_t DCASigmaDay0=0;\r
382\r
383 Double_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z\r
384\r
385 // distance to Prim. vertex \r
386 const Double_t* dv = infoMC->GetVDist(); \r
387\r
388 Float_t mcpt = infoMC->GetParticle().Pt();\r
389 Float_t tantheta = TMath::Tan(infoMC->GetParticle().Theta()-TMath::Pi()*0.5);\r
390 Bool_t isPrim = TMath::Sqrt(dv[0]*dv[0] + dv[1]*dv[1])<fCutsMC->GetMaxR() && TMath::Abs(dv[2])<fCutsMC->GetMaxVz();\r
391 \r
392 // calculate and set prim. vertex\r
393 fVertex->SetXv( infoMC->GetParticle().Vx() - dv[0] );\r
394 fVertex->SetYv( infoMC->GetParticle().Vy() - dv[1] );\r
395 fVertex->SetZv( infoMC->GetParticle().Vz() - dv[2] );\r
396 \r
397 // Check selection cuts\r
398 if (fCutsMC->IsPdgParticle(TMath::Abs(infoMC->GetParticle().GetPdgCode())) == kFALSE) return; \r
399\r
400 // transform Pdg to Pid\r
401 // Pdg convension is different for hadrons and leptons \r
402 // (e.g. K+/K- = 321/-321; e+/e- = -11/11 ) \r
403 Double_t pid = -1;\r
404 if( TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetEM() ) pid = 0; \r
405 if( TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetMuM() ) pid = 1; \r
406 if( TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetPiP() ) pid = 2; \r
407 if( TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetKP() ) pid = 3; \r
408 if( TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetProt() ) pid = 4; \r
409\r
410 //cout << "dv[0] " << dv[0] << " dv[1] " << dv[1] << " dv[2] " << dv[2] << endl; \r
411 //cout << "v[0] " << fVertex->GetXv() << " v[1] " << fVertex->GetYv() << " v[2] " << fVertex->GetZv()<< endl; \r
412 if (TMath::Abs(tantheta)<fCutsRC->GetMaxAbsTanTheta())\r
413 {\r
18e1354a 414 if (infoRC->GetESDtrack() && infoRC->GetESDtrack()->GetTPCInnerParam()) \r
6d1c79ca 415 {\r
416 if ((track = new AliExternalTrackParam(*infoRC->GetESDtrack()->GetTPCInnerParam())) != 0 )\r
417 {\r
6d1c79ca 418 Bool_t bDCAStatus = track->PropagateToDCA(fVertex,field,kMaxD,dca,cov);\r
3baa4bfd 419 if(bDCAStatus) {\r
6d1c79ca 420 //\r
421 cov[2] = track->GetCovariance()[2];\r
422\r
423 // Eff = infoRC->GetStatus(1)==3 && isPrim / isPrim;\r
424 // Pt vs ( dca[0]^2/cov[0]^2 + dca[1]^2/cov[2]^2 ) \r
425 // Pt vs ( dca[0]^2/(cov[0]^2 + kSigma2Full_xy) + dca[1]^2/( cov[2]^2 + kSigma2Full_z ) \r
426 // Pt vs ( dca[0]^2/(cov[0]^2 + kSigma2_xy) + dca[1]^2/( cov[2]^2 + kSigma2_z ) \r
427\r
428 if(cov[0]>0.0 && cov[2]>0.0)\r
429 {\r
430 DCASigmaIdeal = TMath::Power(dca[0],2)/cov[0] \r
431 + TMath::Power(dca[1],2)/cov[2]; \r
432\r
433 DCASigmaFull = TMath::Power(dca[0],2)/(cov[0]+kSigma2Full_xy) \r
434 + TMath::Power(dca[1],2)/(cov[2]+kSigma2Full_z); \r
435\r
436 DCASigmaDay0 = TMath::Power(dca[0],2)/(cov[0]+kSigma2Day0_xy) \r
437 + TMath::Power(dca[1],2)/(cov[2]+kSigma2Day0_z); \r
438\r
439 //cout << "dca[0] " << dca[0] << " dca[1] " << dca[1] << endl; \r
440 //cout << "cov[0] " << cov[0] << " cov[2] " << cov[2] << endl; \r
441 //cout << "DCASigmaIdeal " << DCASigmaIdeal << " DCASigmaFull " << DCASigmaFull << " DCASigmaDay0 " <<DCASigmaDay0 << endl; \r
442 //cout << " -------------------------------------------------------- "<< endl; \r
443 }\r
444\r
445 // MC pt\r
446 fMCPt->Fill(mcpt); \r
447 if(infoRC->GetStatus(1)==3) fMCRecPt->Fill(mcpt); \r
448 if(infoRC->GetStatus(1)==3 && isPrim) fMCRecPrimPt->Fill(mcpt); \r
449 if(infoRC->GetStatus(1)==3 && !isPrim) fMCRecSecPt->Fill(mcpt); \r
450\r
451 if(isPrim)\r
452 {\r
453 fTPCPtDCASigmaIdeal[0]->Fill(mcpt,DCASigmaIdeal);\r
454 fTPCPtDCASigmaFull[0]->Fill(mcpt,DCASigmaFull);\r
455 fTPCPtDCASigmaDay0[0]->Fill(mcpt,DCASigmaDay0);\r
456\r
457 fTPCPtDCAXY[0]->Fill(mcpt,dca[0]);\r
458 fTPCPtDCAZ[0]->Fill(mcpt,dca[1]);\r
459\r
460 fTPCPtDCASigmaIdealPid[0]->Fill(mcpt,DCASigmaIdeal,pid);\r
461 fTPCPtDCASigmaFullPid[0]->Fill(mcpt,DCASigmaFull,pid);\r
462 fTPCPtDCASigmaDay0Pid[0]->Fill(mcpt,DCASigmaDay0,pid);\r
463\r
464 fTPCPtDCAXYPid[0]->Fill(mcpt,dca[0],pid);\r
465 fTPCPtDCAZPid[0]->Fill(mcpt,dca[1],pid);\r
466 \r
467 if(infoRC->GetStatus(1)==3)\r
468 {\r
469 fTPCPtDCASigmaIdeal[1]->Fill(mcpt,DCASigmaIdeal);\r
470 fTPCPtDCASigmaFull[1]->Fill(mcpt,DCASigmaFull);\r
471 fTPCPtDCASigmaDay0[1]->Fill(mcpt,DCASigmaDay0);\r
472\r
473 fTPCPtDCAXY[1]->Fill(mcpt,dca[0]);\r
474 fTPCPtDCAZ[1]->Fill(mcpt,dca[1]);\r
475\r
476 fTPCPtDCASigmaIdealPid[1]->Fill(mcpt,DCASigmaIdeal,pid);\r
477 fTPCPtDCASigmaFullPid[1]->Fill(mcpt,DCASigmaFull,pid);\r
478 fTPCPtDCASigmaDay0Pid[1]->Fill(mcpt,DCASigmaDay0,pid);\r
479\r
480 fTPCPtDCAXYPid[1]->Fill(mcpt,dca[0],pid);\r
481 fTPCPtDCAZPid[1]->Fill(mcpt,dca[1],pid);\r
482 }\r
483 }\r
484\r
485 // Cont = infoRC->GetStatus(1)==3 && !isPrim / infoRC->GetStatus(1)==3 \r
486 // Pt vs ( dz[0]^2/cov[0]^2 + dz[1]^2/cov[2]^2 ) \r
487 // Pt vs ( dz[0]^2/(cov[0]^2 + kSigma2Full_xy) + dz[1]^2/( cov[2]^2 + kSigma2Full_z ) \r
488 // Pt vs ( dz[0]^2/(cov[0]^2 + kSigma2_xy) + dz[1]^2/( cov[2]^2 + kSigma2_z ) \r
489\r
490 if(infoRC->GetStatus(1)==3) \r
491 {\r
492 fTPCPtDCASigmaIdeal[2]->Fill(mcpt,DCASigmaIdeal);\r
493 fTPCPtDCASigmaFull[2]->Fill(mcpt,DCASigmaFull);\r
494 fTPCPtDCASigmaDay0[2]->Fill(mcpt,DCASigmaDay0);\r
495\r
496 fTPCPtDCAXY[2]->Fill(mcpt,dca[0]);\r
497 fTPCPtDCAZ[2]->Fill(mcpt,dca[1]);\r
498\r
499 fTPCPtDCASigmaIdealPid[2]->Fill(mcpt,DCASigmaIdeal,pid);\r
500 fTPCPtDCASigmaFullPid[2]->Fill(mcpt,DCASigmaFull,pid);\r
501 fTPCPtDCASigmaDay0Pid[2]->Fill(mcpt,DCASigmaDay0,pid);\r
502\r
503 fTPCPtDCAXYPid[2]->Fill(mcpt,dca[0],pid);\r
504 fTPCPtDCAZPid[2]->Fill(mcpt,dca[1],pid);\r
505 \r
506 if(isPrim==0)\r
507 {\r
508 fTPCPtDCASigmaIdeal[3]->Fill(mcpt,DCASigmaIdeal);\r
509 fTPCPtDCASigmaFull[3]->Fill(mcpt,DCASigmaFull);\r
510 fTPCPtDCASigmaDay0[3]->Fill(mcpt,DCASigmaDay0);\r
511\r
512 fTPCPtDCAXY[3]->Fill(mcpt,dca[0]);\r
513 fTPCPtDCAZ[3]->Fill(mcpt,dca[1]);\r
514\r
515 fTPCPtDCASigmaIdealPid[3]->Fill(mcpt,DCASigmaIdeal,pid);\r
516 fTPCPtDCASigmaFullPid[3]->Fill(mcpt,DCASigmaFull,pid);\r
517 fTPCPtDCASigmaDay0Pid[3]->Fill(mcpt,DCASigmaDay0,pid);\r
518\r
519 fTPCPtDCAXYPid[3]->Fill(mcpt,dca[0],pid);\r
520 fTPCPtDCAZPid[3]->Fill(mcpt,dca[1],pid);\r
521 }\r
522 }\r
523 delete track;\r
524 }\r
525 }\r
526 } \r
527 else \r
528 {\r
529 if(isPrim)\r
530 {\r
531 fTPCPtDCASigmaIdeal[0]->Fill(mcpt,0.0);\r
532 fTPCPtDCASigmaFull[0]->Fill(mcpt,0.0);\r
533 fTPCPtDCASigmaDay0[0]->Fill(mcpt,0.0);\r
534\r
535 fTPCPtDCAXY[0]->Fill(mcpt,0.0);\r
536 fTPCPtDCAZ[0]->Fill(mcpt,0.0);\r
537\r
538 fTPCPtDCASigmaIdealPid[0]->Fill(mcpt,0.0,pid);\r
539 fTPCPtDCASigmaFullPid[0]->Fill(mcpt,0.0,pid);\r
540 fTPCPtDCASigmaDay0Pid[0]->Fill(mcpt,0.0,pid);\r
541\r
542 fTPCPtDCAXYPid[0]->Fill(mcpt,0.0,pid);\r
543 fTPCPtDCAZPid[0]->Fill(mcpt,0.0,pid);\r
544 }\r
545 }\r
546 }\r
547\r
548 // only primary particles\r
549 if (!isPrim) return;\r
550\r
551 // pt\r
552 if (TMath::Abs(tantheta)<fCutsRC->GetMaxAbsTanTheta()){\r
553\r
554 fEffTPCPt->Fill(mcpt, infoRC->GetStatus(1)==3);\r
555 fEffTPCPtMC->Fill(mcpt, infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits());\r
556 if (infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()){\r
557 fEffTPCPtF->Fill(mcpt, infoRC->GetStatus(1)==3);\r
558 }\r
35771050 559 \r
560 fEffTPCITSPt->Fill(mcpt, infoRC->GetStatus(1)==3 && (infoRC->GetESDtrack()->GetITSclusters(clusterITS)>fCutsRC->GetMinNClustersITS()));\r
6d1c79ca 561\r
562 // protons\r
563 if(TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetProt()) { \r
564 fEffTPCPt_P->Fill(mcpt, infoRC->GetStatus(1)==3);\r
565 fEffTPCPtMC_P->Fill(mcpt, infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits());\r
566\r
567 if(infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()) {\r
568 fEffTPCPtF_P->Fill(mcpt, infoRC->GetStatus(1)==3);\r
569 }\r
570 }\r
571\r
572 // pions\r
573 if(TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetPiP()) {\r
574 fEffTPCPt_Pi->Fill(mcpt, infoRC->GetStatus(1)==3);\r
575 fEffTPCPtMC_Pi->Fill(mcpt, infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits());\r
576\r
577 if(infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()) {\r
578 fEffTPCPtF_Pi->Fill(mcpt, infoRC->GetStatus(1)==3);\r
579 }\r
580 }\r
581\r
582 // kaons\r
583 if(TMath::Abs(infoMC->GetParticle().GetPdgCode())==fCutsMC->GetKP()) {\r
584 fEffTPCPt_K->Fill(mcpt, infoRC->GetStatus(1)==3);\r
585 fEffTPCPtMC_K->Fill(mcpt, infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits());\r
586\r
587 if(infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()) {\r
588 fEffTPCPtF_K->Fill(mcpt, infoRC->GetStatus(1)==3);\r
589 }\r
35771050 590 }\r
6d1c79ca 591 }\r
592\r
593 // theta\r
594 if (TMath::Abs(mcpt)>fCutsRC->GetPtMin()){\r
595 fEffTPCTan->Fill(tantheta, infoRC->GetStatus(1)==3);\r
596 fEffTPCTanMC->Fill(tantheta, infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits());\r
597 if (infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()){\r
598 fEffTPCTanF->Fill(tantheta, infoRC->GetStatus(1)==3);\r
599 }\r
35771050 600\r
601 fEffTPCITSTan->Fill(tantheta, infoRC->GetStatus(1)==3 && (infoRC->GetESDtrack()->GetITSclusters(clusterITS)>fCutsRC->GetMinNClustersITS()));\r
6d1c79ca 602 }\r
603\r
604 // pt-theta\r
605 fEffTPCPtTan->Fill(mcpt,tantheta,infoRC->GetStatus(1)==3);\r
606 fEffTPCPtTanMC->Fill(mcpt,tantheta,infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()); \r
607 if (infoMC->GetRowsWithDigits()>fCutsMC->GetMinRowsWithDigits()){\r
608 fEffTPCPtTanF->Fill(mcpt,tantheta,infoRC->GetStatus(1)==3); \r
609 }\r
610}\r
611\r
612//_____________________________________________________________________________\r
613void AliComparisonEff::Exec(AliMCInfo* infoMC, AliESDRecInfo *infoRC)\r
614{\r
615 // Process comparison information\r
616 Process(infoMC,infoRC);\r
617}\r
618\r
619//_____________________________________________________________________________\r
620Long64_t AliComparisonEff::Merge(TCollection* list) \r
621{\r
622 // Merge list of objects (needed by PROOF)\r
623\r
624 if (!list)\r
625 return 0;\r
626\r
627 if (list->IsEmpty())\r
628 return 1;\r
629\r
630 TIterator* iter = list->MakeIterator();\r
631 TObject* obj = 0;\r
632\r
633 // collection of generated histograms\r
634\r
635 Int_t count=0;\r
636 while((obj = iter->Next()) != 0) \r
637 {\r
638 AliComparisonEff* entry = dynamic_cast<AliComparisonEff*>(obj);\r
3baa4bfd 639 if (entry == 0) continue; \r
6d1c79ca 640 \r
641 fMCPt->Add(entry->fMCPt);\r
642 fMCRecPt->Add(entry->fMCRecPt);\r
643 fMCRecPrimPt->Add(entry->fMCRecPrimPt);\r
644 fMCRecSecPt->Add(entry->fMCRecSecPt);\r
645\r
646 fEffTPCPt->Add(entry->fEffTPCPt);\r
647 fEffTPCPtMC->Add(entry->fEffTPCPtMC);\r
648 fEffTPCPtF->Add(entry->fEffTPCPtF);\r
649\r
650 fEffTPCPt_P->Add(entry->fEffTPCPt_P);\r
651 fEffTPCPtMC_P->Add(entry->fEffTPCPtMC_P);\r
652 fEffTPCPtF_P->Add(entry->fEffTPCPtF_P);\r
653\r
654 fEffTPCPt_Pi->Add(entry->fEffTPCPt_Pi);\r
655 fEffTPCPtMC_Pi->Add(entry->fEffTPCPtMC_Pi);\r
656 fEffTPCPtF_Pi->Add(entry->fEffTPCPtF_Pi);\r
657\r
658 fEffTPCPt_K->Add(entry->fEffTPCPt_K);\r
659 fEffTPCPtMC_K->Add(entry->fEffTPCPtMC_K);\r
660 fEffTPCPtF_K->Add(entry->fEffTPCPtF_K);\r
661\r
662 fEffTPCTan->Add(entry->fEffTPCTan);\r
663 fEffTPCTanMC->Add(entry->fEffTPCTanMC);\r
664 fEffTPCTanF->Add(entry->fEffTPCTanF);\r
665 \r
666 fEffTPCPtTan->Add(entry->fEffTPCPtTan);\r
667 fEffTPCPtTanMC->Add(entry->fEffTPCPtTanMC);\r
668 fEffTPCPtTanF->Add(entry->fEffTPCPtTanF);\r
669 \r
35771050 670 fEffTPCITSPt->Add(entry->fEffTPCITSPt);\r
671 fEffTPCITSTan->Add(entry->fEffTPCITSTan);\r
672\r
6d1c79ca 673 for(Int_t i=0; i<4; ++i)\r
674 {\r
675 fTPCPtDCASigmaIdeal[i]->Add(entry->fTPCPtDCASigmaIdeal[i]);\r
676 fTPCPtDCASigmaFull[i]->Add(entry->fTPCPtDCASigmaFull[i]);\r
677 fTPCPtDCASigmaDay0[i]->Add(entry->fTPCPtDCASigmaDay0[i]);\r
678\r
679 fTPCPtDCAXY[i]->Add(entry->fTPCPtDCAXY[i]);\r
680 fTPCPtDCAZ[i]->Add(entry->fTPCPtDCAXY[i]);\r
681\r
682 fTPCPtDCASigmaIdealPid[i]->Add(entry->fTPCPtDCASigmaIdealPid[i]);\r
683 fTPCPtDCASigmaFullPid[i]->Add(entry->fTPCPtDCASigmaFullPid[i]);\r
684 fTPCPtDCASigmaDay0Pid[i]->Add(entry->fTPCPtDCASigmaDay0Pid[i]);\r
685\r
686 fTPCPtDCAXYPid[i]->Add(entry->fTPCPtDCAXYPid[i]);\r
687 fTPCPtDCAZPid[i]->Add(entry->fTPCPtDCAXYPid[i]);\r
688 }\r
689\r
690 count++;\r
691 }\r
692\r
693return count;\r
694}\r
695 \r
696//_____________________________________________________________________________\r
697void AliComparisonEff::Analyse() \r
698{\r
3baa4bfd 699 // Analyse comparison information and store output histograms\r
700 // in the folder "folderEff" \r
701 //\r
6d1c79ca 702 \r
3baa4bfd 703 TH1::AddDirectory(kFALSE);\r
704\r
6d1c79ca 705 AliComparisonEff * comp=this;\r
b4126c69 706 TObjArray *aFolderObj = new TObjArray;\r
6d1c79ca 707\r
3baa4bfd 708 // calculate efficiency and contamination (4 sigma) \r
6d1c79ca 709 TH1 *h_sigmaidealpid[20];\r
710 TH1 *h_sigmafullpid[20];\r
711 TH1 *h_sigmaday0pid[20];\r
712\r
6d1c79ca 713 TH1 *h_sigmaidealpidtot[4];\r
714 TH1 *h_sigmafullpidtot[4];\r
715 TH1 *h_sigmaday0pidtot[4];\r
716\r
6d1c79ca 717 char name[256];\r
718 char name1[256];\r
719 Int_t idx;\r
720\r
721 for(Int_t i=0; i<4; ++i)\r
722 {\r
723 //total\r
724 comp->fTPCPtDCASigmaIdealPid[i]->GetYaxis()->SetRange(1,4);\r
725 sprintf(name,"h_sigmaidealpidtot_%d",i);\r
726 h_sigmaidealpidtot[i] = comp->fTPCPtDCASigmaIdealPid[i]->Project3D();\r
727 h_sigmaidealpidtot[i]->SetName(name);\r
728\r
729 comp->fTPCPtDCASigmaFullPid[i]->GetYaxis()->SetRange(1,4);\r
730 sprintf(name,"h_sigmafullpidtot_%d",i);\r
731 h_sigmafullpidtot[i] = comp->fTPCPtDCASigmaFullPid[i]->Project3D();\r
732 h_sigmafullpidtot[i]->SetName(name);\r
733\r
734 comp->fTPCPtDCASigmaDay0Pid[i]->GetYaxis()->SetRange(1,4);\r
735 sprintf(name,"h_sigmaday0pidtot_%d",i);\r
736 h_sigmaday0pidtot[i] = comp->fTPCPtDCASigmaDay0Pid[i]->Project3D();\r
737 h_sigmaday0pidtot[i]->SetName(name);\r
738\r
739 // pid wise\r
740 for(Int_t j=0; j<5; ++j)\r
741 {\r
742 idx = i*5 + j;\r
743\r
744 comp->fTPCPtDCASigmaIdealPid[i]->GetYaxis()->SetRange(1,4);\r
745 comp->fTPCPtDCASigmaIdealPid[i]->GetZaxis()->SetRange(j+1,j+1);\r
746\r
747 sprintf(name,"h_sigmaidealpid_%d",idx);\r
748 h_sigmaidealpid[idx] = comp->fTPCPtDCASigmaIdealPid[i]->Project3D();\r
749 h_sigmaidealpid[idx]->SetName(name);\r
750 \r
751\r
752 comp->fTPCPtDCASigmaFullPid[i]->GetYaxis()->SetRange(1,4);\r
753 comp->fTPCPtDCASigmaFullPid[i]->GetZaxis()->SetRange(j+1,j+1);\r
754\r
755 sprintf(name,"h_sigmafullpid_%d",idx);\r
756 h_sigmafullpid[idx] = comp->fTPCPtDCASigmaFullPid[i]->Project3D();\r
757 h_sigmafullpid[idx]->SetName(name);\r
758 \r
759 comp->fTPCPtDCASigmaDay0Pid[i]->GetYaxis()->SetRange(1,4);\r
760 comp->fTPCPtDCASigmaDay0Pid[i]->GetZaxis()->SetRange(j+1,j+1);\r
761\r
762 sprintf(name,"h_sigmaday0pid_%d",idx);\r
763 h_sigmaday0pid[idx] = comp->fTPCPtDCASigmaDay0Pid[i]->Project3D();\r
764 h_sigmaday0pid[idx]->SetName(name);\r
6d1c79ca 765 } \r
766 }\r
767\r
768 // calculate efficiency and contamination (all pids)\r
769 h_sigmaidealpidtot[0]->Sumw2();\r
770 h_sigmaidealpidtot[1]->Divide(h_sigmaidealpidtot[0]);\r
771 h_sigmaidealpidtot[2]->Sumw2();\r
772 h_sigmaidealpidtot[3]->Divide(h_sigmaidealpidtot[2]);\r
773\r
774 h_sigmafullpidtot[0]->Sumw2();\r
775 h_sigmafullpidtot[1]->Divide(h_sigmafullpidtot[0]);\r
776 h_sigmafullpidtot[2]->Sumw2();\r
777 h_sigmafullpidtot[3]->Divide(h_sigmafullpidtot[2]);\r
778\r
779 h_sigmaday0pidtot[0]->Sumw2();\r
780 h_sigmaday0pidtot[1]->Divide(h_sigmaday0pidtot[0]);\r
781 h_sigmaday0pidtot[2]->Sumw2();\r
782 h_sigmaday0pidtot[3]->Divide(h_sigmaday0pidtot[2]);\r
783\r
784 // calculate efficiency pid wise\r
07933e2a 785 for(Int_t jdx = 0; jdx<5; jdx++)\r
6d1c79ca 786 {\r
07933e2a 787 h_sigmaidealpid[jdx]->Sumw2();\r
788 h_sigmaidealpid[jdx+5]->Divide(h_sigmaidealpid[jdx]);\r
6d1c79ca 789\r
07933e2a 790 h_sigmafullpid[jdx]->Sumw2();\r
791 h_sigmafullpid[jdx+5]->Divide(h_sigmafullpid[jdx]);\r
6d1c79ca 792\r
07933e2a 793 h_sigmaday0pid[jdx]->Sumw2();\r
794 h_sigmaday0pid[jdx+5]->Divide(h_sigmaday0pid[jdx]);\r
6d1c79ca 795 }\r
796\r
797 // calculate cont. pid wise\r
07933e2a 798 for(Int_t jdx = 0; jdx<5; jdx++)\r
6d1c79ca 799 {\r
07933e2a 800 h_sigmaidealpid[jdx+15]->Divide(h_sigmaidealpidtot[2]);\r
801 h_sigmafullpid[jdx+15]->Divide(h_sigmafullpidtot[2]);\r
802 h_sigmaday0pid[jdx+15]->Divide(h_sigmaday0pidtot[2]);\r
6d1c79ca 803 }\r
804\r
6d1c79ca 805 TCanvas * c = new TCanvas("Efficiency","Track efficiency");\r
806 c->cd();\r
b4126c69 807 c->Divide(1,2);\r
6d1c79ca 808\r
6d1c79ca 809 //\r
b4126c69 810 c->cd(1);\r
6d1c79ca 811 comp->fEffTPCTanF->SetXTitle("Tan(#theta)");\r
812 comp->fEffTPCTanF->SetYTitle("eff_{findable}");\r
3baa4bfd 813 comp->fEffTPCTanF->SetName("EffTanFindable");\r
b4126c69 814 comp->fEffTPCTanF->Draw();\r
6d1c79ca 815 //\r
b4126c69 816 c->cd(2);\r
6d1c79ca 817 comp->fEffTPCTan->SetXTitle("Tan(#theta)");\r
818 comp->fEffTPCTan->SetYTitle("eff_{all}");\r
3baa4bfd 819 comp->fEffTPCTan->SetName("EffTanAll");\r
b4126c69 820 comp->fEffTPCTan->Draw();\r
6d1c79ca 821\r
b4126c69 822 aFolderObj->Add(comp->fEffTPCTanF);\r
823 aFolderObj->Add(comp->fEffTPCTan);\r
6d1c79ca 824\r
b4126c69 825 h_sigmaidealpidtot[1]->SetXTitle("p_{t}");\r
826 h_sigmaidealpidtot[1]->SetYTitle("efficiency");\r
827 h_sigmaidealpidtot[1]->SetTitle("Eff_SigmaIdeal");\r
3baa4bfd 828 h_sigmaidealpidtot[1]->SetName("Eff_SigmaIdeal");\r
b4126c69 829\r
830 h_sigmaidealpidtot[3]->SetXTitle("p_{t}");\r
831 h_sigmaidealpidtot[3]->SetYTitle("contamination");\r
832 h_sigmaidealpidtot[3]->SetTitle("Cont_SigmaIdeal");\r
3baa4bfd 833 h_sigmaidealpidtot[3]->SetName("Cont_SigmaIdeal");\r
6d1c79ca 834\r
b4126c69 835 aFolderObj->Add(h_sigmaidealpidtot[1]);\r
836 aFolderObj->Add(h_sigmaidealpidtot[3]);\r
3baa4bfd 837\r
b4126c69 838 h_sigmafullpidtot[1]->SetXTitle("p_{t}");\r
839 h_sigmafullpidtot[1]->SetYTitle("efficiency");\r
840 h_sigmafullpidtot[1]->SetTitle("Eff_SigmaFull");\r
3baa4bfd 841 h_sigmafullpidtot[1]->SetName("Eff_SigmaFull");\r
b4126c69 842\r
843 h_sigmafullpidtot[3]->SetXTitle("p_{t}");\r
844 h_sigmafullpidtot[3]->SetYTitle("contamination");\r
845 h_sigmafullpidtot[3]->SetTitle("Cont_SigmaFull");\r
3baa4bfd 846 h_sigmafullpidtot[3]->SetName("Cont_SigmaFull");\r
847\r
b4126c69 848 aFolderObj->Add(h_sigmafullpidtot[1]);\r
849 aFolderObj->Add(h_sigmafullpidtot[3]);\r
3baa4bfd 850\r
b4126c69 851 h_sigmaday0pidtot[1]->SetXTitle("p_{t}");\r
852 h_sigmaday0pidtot[1]->SetYTitle("efficiency");\r
853 h_sigmaday0pidtot[1]->SetTitle("Eff_SigmaDay0");\r
3baa4bfd 854 h_sigmaday0pidtot[1]->SetName("Eff_SigmaDay0");\r
b4126c69 855\r
856 h_sigmaday0pidtot[3]->SetXTitle("p_{t}");\r
857 h_sigmaday0pidtot[3]->SetYTitle("contamination");\r
858 h_sigmaday0pidtot[3]->SetTitle("Cont_SigmaDay0");\r
3baa4bfd 859 h_sigmaday0pidtot[3]->SetName("Cont_SigmaDay0");\r
860\r
b4126c69 861 aFolderObj->Add(h_sigmaday0pidtot[1]);\r
862 aFolderObj->Add(h_sigmaday0pidtot[3]);\r
6d1c79ca 863\r
07933e2a 864 for(Int_t jdx = 0; jdx<5; jdx++)\r
6d1c79ca 865 {\r
07933e2a 866 sprintf(name,"Eff_SigmaIdeal_%d",jdx);\r
867 sprintf(name1,"Cont_SigmaIdeal_%d",jdx);\r
6d1c79ca 868\r
b4126c69 869\r
07933e2a 870 h_sigmaidealpid[jdx+5]->SetXTitle("p_{t}");\r
871 h_sigmaidealpid[jdx+5]->SetYTitle("efficiency");\r
872 h_sigmaidealpid[jdx+5]->SetTitle(name);\r
873 h_sigmaidealpid[jdx+5]->SetName(name);\r
b4126c69 874\r
07933e2a 875 h_sigmaidealpid[jdx+15]->SetXTitle("p_{t}");\r
876 h_sigmaidealpid[jdx+15]->SetYTitle("contamination");\r
877 h_sigmaidealpid[jdx+15]->SetTitle(name1);\r
878 h_sigmaidealpid[jdx+15]->SetName(name1);\r
3baa4bfd 879\r
07933e2a 880 aFolderObj->Add(h_sigmaidealpid[jdx+5]);\r
881 aFolderObj->Add(h_sigmaidealpid[jdx+15]);\r
6d1c79ca 882\r
07933e2a 883 sprintf(name,"Eff_SigmaFull_%d",jdx);\r
884 sprintf(name1,"Cont_SigmaFull_%d",jdx);\r
6d1c79ca 885\r
07933e2a 886 h_sigmafullpid[jdx+5]->SetXTitle("p_{t}");\r
887 h_sigmafullpid[jdx+5]->SetYTitle("efficiency");\r
888 h_sigmafullpid[jdx+5]->SetTitle(name);\r
889 h_sigmafullpid[jdx+5]->SetName(name);\r
b4126c69 890\r
07933e2a 891 h_sigmafullpid[jdx+15]->SetXTitle("p_{t}");\r
892 h_sigmafullpid[jdx+15]->SetYTitle("contamination");\r
893 h_sigmafullpid[jdx+15]->SetTitle(name1);\r
894 h_sigmafullpid[jdx+15]->SetName(name1);\r
3baa4bfd 895\r
07933e2a 896 aFolderObj->Add(h_sigmafullpid[jdx+5]);\r
897 aFolderObj->Add(h_sigmafullpid[jdx+15]);\r
6d1c79ca 898\r
07933e2a 899 sprintf(name,"Eff_SigmaDay0_%d",jdx);\r
900 sprintf(name1,"Cont_SigmaDay0_%d",jdx);\r
6d1c79ca 901\r
07933e2a 902 h_sigmaday0pid[jdx+5]->SetXTitle("p_{t}");\r
903 h_sigmaday0pid[jdx+5]->SetYTitle("efficiency");\r
904 h_sigmaday0pid[jdx+5]->SetTitle(name);\r
905 h_sigmaday0pid[jdx+5]->SetName(name);\r
b4126c69 906\r
07933e2a 907 h_sigmaday0pid[jdx+15]->SetXTitle("p_{t}");\r
908 h_sigmaday0pid[jdx+15]->SetYTitle("contamination");\r
909 h_sigmaday0pid[jdx+15]->SetTitle(name1);\r
910 h_sigmaday0pid[jdx+15]->SetName(name1);\r
3baa4bfd 911\r
07933e2a 912 aFolderObj->Add(h_sigmaday0pid[jdx+5]);\r
913 aFolderObj->Add(h_sigmaday0pid[jdx+15]);\r
6d1c79ca 914 }\r
915\r
b4126c69 916 // export objects to analysis folder\r
917 fAnalysisFolder = ExportToFolder(aFolderObj);\r
3baa4bfd 918\r
b4126c69 919 // delete only TObjArray\r
920 if(aFolderObj) delete aFolderObj;\r
3baa4bfd 921}\r
922\r
b4126c69 923//_____________________________________________________________________________\r
924TFolder* AliComparisonEff::ExportToFolder(TObjArray * array) \r
925{\r
926 // recreate folder avery time and export objects to new one\r
927 //\r
928 AliComparisonEff * comp=this;\r
929 TFolder *folder = comp->GetAnalysisFolder();\r
930\r
931 TString name, title;\r
932 TFolder *newFolder = 0;\r
933 Int_t i = 0;\r
934 Int_t size = array->GetSize();\r
935\r
936 if(folder) { \r
937 // get name and title from old folder\r
938 name = folder->GetName(); \r
939 title = folder->GetTitle(); \r
940\r
941 // delete old one\r
942 delete folder;\r
943\r
944 // create new one\r
945 newFolder = CreateFolder(name.Data(),title.Data());\r
946 newFolder->SetOwner();\r
947\r
948 // add objects to folder\r
949 while(i < size) {\r
950 newFolder->Add(array->At(i));\r
951 i++;\r
952 }\r
953 }\r
954\r
955return newFolder;\r
956}\r
957\r
958\r
3baa4bfd 959//_____________________________________________________________________________\r
960TFolder* AliComparisonEff::CreateFolder(TString name,TString title) { \r
961// create folder for analysed histograms\r
962//\r
963TFolder *folder = 0;\r
964 folder = new TFolder(name.Data(),title.Data());\r
965\r
966 return folder;\r
6d1c79ca 967}\r