]>
Commit | Line | Data |
---|---|---|
b758ccbe | 1 | /**************************************************************************\r |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r | |
3 | * *\r | |
4 | * Author: The ALICE Off-line Project. *\r | |
5 | * Contributors are mentioned in the code where appropriate. *\r | |
6 | * *\r | |
7 | * Permission to use, copy, modify and distribute this software and its *\r | |
8 | * documentation strictly for non-commercial purposes is hereby granted *\r | |
9 | * without fee, provided that the above copyright notice appears in all *\r | |
10 | * copies and that both the copyright notice and this permission notice *\r | |
11 | * appear in the supporting documentation. The authors make no claims *\r | |
12 | * about the suitability of this software for any purpose. It is *\r | |
13 | * provided "as is" without express or implied warranty. *\r | |
14 | **************************************************************************/\r | |
15 | //\r | |
16 | // QA task\r | |
17 | // \r | |
18 | // Authors:\r | |
19 | // Raphaelle Bailhache <R.Bailhache@gsi.de>\r | |
20 | //\r | |
21 | #include "TROOT.h"\r | |
22 | #include "TChain.h"\r | |
23 | #include "TMath.h"\r | |
24 | #include <TString.h>\r | |
25 | #include <TBits.h>\r | |
26 | #include <TH1F.h>\r | |
27 | \r | |
28 | #include <TDirectory.h>\r | |
29 | #include <TTreeStream.h>\r | |
30 | \r | |
31 | #include "AliVEventHandler.h"\r | |
32 | #include "AliMCEventHandler.h"\r | |
33 | #include "AliAnalysisTaskSE.h"\r | |
34 | #include "AliAnalysisManager.h"\r | |
35 | \r | |
36 | #include "AliVEvent.h"\r | |
37 | #include "AliESDInputHandler.h"\r | |
38 | #include "AliMCEvent.h"\r | |
39 | #include "AliESD.h"\r | |
40 | #include "AliESDEvent.h"\r | |
41 | #include "AliPID.h"\r | |
42 | #include "AliPIDResponse.h"\r | |
43 | #include "AliESDUtils.h"\r | |
44 | #include "AliMCParticle.h"\r | |
45 | #include "AliAODMCParticle.h"\r | |
46 | #include "AliAODEvent.h"\r | |
47 | #include "AliAODVertex.h"\r | |
48 | #include "AliAODTrack.h"\r | |
49 | #include "AliVTrack.h"\r | |
50 | #include "AliESDtrack.h"\r | |
51 | #include "AliESDtrackCuts.h"\r | |
52 | #include "AliAODTrack.h"\r | |
53 | #include "AliStack.h"\r | |
54 | #include "AliMCEvent.h"\r | |
55 | \r | |
56 | #include "AliHFEcuts.h"\r | |
57 | #include "AliHFEpid.h"\r | |
58 | #include "AliHFEpidQAmanager.h"\r | |
59 | #include "AliHFEtools.h"\r | |
60 | \r | |
61 | #include "AliCentrality.h"\r | |
62 | #include "AliEventplane.h"\r | |
63 | #include "AliAnalysisTaskHFEQA.h"\r | |
64 | #include "AliAODMCHeader.h"\r | |
65 | \r | |
66 | \r | |
67 | ClassImp(AliAnalysisTaskHFEQA)\r | |
68 | \r | |
69 | //____________________________________________________________________\r | |
70 | AliAnalysisTaskHFEQA::AliAnalysisTaskHFEQA() :\r | |
71 | AliAnalysisTaskSE(),\r | |
72 | fListHist(0x0), \r | |
73 | fAODAnalysis(kFALSE),\r | |
74 | fAODMCHeader(NULL),\r | |
75 | fAODArrayMCInfo(NULL),\r | |
76 | fHFECuts(0),\r | |
77 | fPIDTPConly(0),\r | |
85358761 | 78 | fPIDTRDonly(0),\r |
b758ccbe | 79 | fPIDTOFTPC(0),\r |
80 | fPIDTPCTRD(0),\r | |
81 | fPIDTPCEMCal(0),\r | |
85358761 | 82 | fPIDqaTRDonly(0),\r |
b758ccbe | 83 | fPIDqaTOFTPC(0),\r |
84 | fPIDqaTPCTRD(0),\r | |
85 | fPIDqaTPCEMCal(0),\r | |
86 | fCentralityEstimator("V0M"),\r | |
87 | fCollisionSystem(3),\r | |
85358761 | 88 | fNbEvent(0),\r |
b758ccbe | 89 | fTPConly(0),\r |
90 | fTOFTPC(0),\r | |
91 | fTPCTRD(0),\r | |
890e8a53 | 92 | fTPCEMCal(0),\r |
93 | fTPConlydo(kFALSE),\r | |
85358761 | 94 | fTRDonlydo(kFALSE),\r |
890e8a53 | 95 | fTOFTPCdo(kFALSE),\r |
96 | fTPCTRDdo(kFALSE),\r | |
97 | fTPCEMCaldo(kFALSE)\r | |
b758ccbe | 98 | {\r |
99 | // Constructor\r | |
100 | \r | |
101 | }\r | |
102 | //______________________________________________________________________________\r | |
103 | AliAnalysisTaskHFEQA:: AliAnalysisTaskHFEQA(const char *name) :\r | |
104 | AliAnalysisTaskSE(name),\r | |
105 | fListHist(0x0),\r | |
106 | fAODAnalysis(kFALSE),\r | |
107 | fAODMCHeader(NULL),\r | |
108 | fAODArrayMCInfo(NULL),\r | |
109 | fHFECuts(0),\r | |
110 | fPIDTPConly(0),\r | |
85358761 | 111 | fPIDTRDonly(0),\r |
b758ccbe | 112 | fPIDTOFTPC(0),\r |
113 | fPIDTPCTRD(0),\r | |
114 | fPIDTPCEMCal(0),\r | |
85358761 | 115 | fPIDqaTRDonly(0),\r |
b758ccbe | 116 | fPIDqaTOFTPC(0),\r |
117 | fPIDqaTPCTRD(0),\r | |
118 | fPIDqaTPCEMCal(0),\r | |
119 | fCentralityEstimator("V0M"),\r | |
120 | fCollisionSystem(3),\r | |
85358761 | 121 | fNbEvent(0),\r |
b758ccbe | 122 | fTPConly(0),\r |
123 | fTOFTPC(0),\r | |
124 | fTPCTRD(0),\r | |
890e8a53 | 125 | fTPCEMCal(0),\r |
126 | fTPConlydo(kFALSE),\r | |
85358761 | 127 | fTRDonlydo(kFALSE),\r |
890e8a53 | 128 | fTOFTPCdo(kFALSE),\r |
129 | fTPCTRDdo(kFALSE),\r | |
130 | fTPCEMCaldo(kFALSE)\r | |
b758ccbe | 131 | {\r |
132 | //\r | |
133 | // named ctor\r | |
134 | //\r | |
135 | \r | |
136 | fPIDTPConly = new AliHFEpid("hfePidTPConly");\r | |
85358761 | 137 | fPIDTRDonly = new AliHFEpid("hfePidTRDonly");\r |
b758ccbe | 138 | fPIDTOFTPC = new AliHFEpid("hfePidTOFTPC");\r |
139 | fPIDTPCTRD = new AliHFEpid("hfePidTPCTRD");\r | |
140 | fPIDTPCEMCal = new AliHFEpid("hfePidTPCEMCal");\r | |
141 | \r | |
85358761 | 142 | fPIDqaTRDonly = new AliHFEpidQAmanager;\r |
b758ccbe | 143 | fPIDqaTOFTPC = new AliHFEpidQAmanager;\r |
144 | fPIDqaTPCTRD = new AliHFEpidQAmanager;\r | |
145 | fPIDqaTPCEMCal = new AliHFEpidQAmanager;\r | |
146 | \r | |
147 | SetPbPbAnalysis();\r | |
148 | \r | |
149 | DefineInput(0,TChain::Class());\r | |
150 | DefineOutput(1, TList::Class());\r | |
151 | \r | |
152 | }\r | |
153 | //____________________________________________________________\r | |
154 | AliAnalysisTaskHFEQA::AliAnalysisTaskHFEQA(const AliAnalysisTaskHFEQA &ref):\r | |
155 | AliAnalysisTaskSE(ref),\r | |
156 | fListHist(NULL),\r | |
157 | fAODAnalysis(ref.fAODAnalysis), \r | |
158 | fAODMCHeader(ref.fAODMCHeader),\r | |
159 | fAODArrayMCInfo(ref.fAODArrayMCInfo),\r | |
160 | fHFECuts(NULL),\r | |
161 | fPIDTPConly(0),\r | |
85358761 | 162 | fPIDTRDonly(0),\r |
b758ccbe | 163 | fPIDTOFTPC(0),\r |
164 | fPIDTPCTRD(0),\r | |
165 | fPIDTPCEMCal(0),\r | |
85358761 | 166 | fPIDqaTRDonly(0),\r |
b758ccbe | 167 | fPIDqaTOFTPC(0),\r |
168 | fPIDqaTPCTRD(0),\r | |
169 | fPIDqaTPCEMCal(0),\r | |
170 | fCentralityEstimator(ref.fCentralityEstimator),\r | |
171 | fCollisionSystem(ref.fCollisionSystem),\r | |
85358761 | 172 | fNbEvent(ref.fNbEvent),\r |
b758ccbe | 173 | fTPConly(ref.fTPConly),\r |
174 | fTOFTPC(ref.fTOFTPC),\r | |
175 | fTPCTRD(ref.fTPCTRD),\r | |
890e8a53 | 176 | fTPCEMCal(ref.fTPCEMCal),\r |
177 | fTPConlydo(ref.fTPConlydo),\r | |
85358761 | 178 | fTRDonlydo(ref.fTRDonlydo),\r |
890e8a53 | 179 | fTOFTPCdo(ref.fTOFTPCdo),\r |
180 | fTPCTRDdo(ref.fTPCTRDdo),\r | |
181 | fTPCEMCaldo(ref.fTPCEMCaldo)\r | |
b758ccbe | 182 | {\r |
183 | //\r | |
184 | // Copy Constructor\r | |
185 | //\r | |
186 | \r | |
187 | ref.Copy(*this);\r | |
188 | }\r | |
189 | \r | |
190 | //____________________________________________________________\r | |
191 | AliAnalysisTaskHFEQA &AliAnalysisTaskHFEQA::operator=(const AliAnalysisTaskHFEQA &ref){\r | |
192 | //\r | |
193 | // Assignment operator\r | |
194 | //\r | |
195 | if(this == &ref) \r | |
196 | ref.Copy(*this);\r | |
197 | return *this;\r | |
198 | }\r | |
199 | \r | |
200 | //____________________________________________________________\r | |
201 | void AliAnalysisTaskHFEQA::Copy(TObject &o) const {\r | |
202 | // \r | |
203 | // Copy into object o\r | |
204 | //\r | |
205 | AliAnalysisTaskHFEQA &target = dynamic_cast<AliAnalysisTaskHFEQA &>(o);\r | |
206 | target.fListHist = fListHist;\r | |
207 | target.fAODAnalysis = fAODAnalysis;\r | |
208 | target.fAODMCHeader = fAODMCHeader;\r | |
209 | target.fAODArrayMCInfo = fAODArrayMCInfo;\r | |
210 | target.fHFECuts = fHFECuts;\r | |
211 | target.fPIDTPConly = fPIDTPConly;\r | |
85358761 | 212 | target.fPIDTRDonly = fPIDTRDonly;\r |
b758ccbe | 213 | target.fPIDTOFTPC = fPIDTOFTPC;\r |
214 | target.fPIDTPCTRD = fPIDTPCTRD;\r | |
215 | target.fPIDTPCEMCal = fPIDTPCEMCal;\r | |
85358761 | 216 | target.fPIDqaTRDonly = fPIDqaTRDonly;\r |
b758ccbe | 217 | target.fPIDqaTOFTPC = fPIDqaTOFTPC;\r |
218 | target.fPIDqaTPCTRD = fPIDqaTPCTRD;\r | |
219 | target.fPIDqaTPCEMCal = fPIDqaTPCEMCal;\r | |
220 | target.fCentralityEstimator = fCentralityEstimator;\r | |
221 | target.fCollisionSystem = fCollisionSystem;\r | |
85358761 | 222 | target.fNbEvent = fNbEvent;\r |
b758ccbe | 223 | target.fTPConly = fTPConly;\r |
224 | target.fTOFTPC = fTOFTPC;\r | |
225 | target.fTPCTRD = fTPCTRD;\r | |
226 | target.fTPCEMCal = fTPCEMCal;\r | |
890e8a53 | 227 | target.fTPConlydo = fTPConlydo;\r |
85358761 | 228 | target.fTRDonlydo = fTRDonlydo; \r |
890e8a53 | 229 | target.fTOFTPCdo = fTOFTPCdo;\r |
230 | target.fTPCTRDdo = fTPCTRDdo;\r | |
231 | target.fTPCEMCaldo = fTPCEMCaldo;\r | |
b758ccbe | 232 | \r |
233 | \r | |
234 | }\r | |
235 | //____________________________________________________________\r | |
236 | AliAnalysisTaskHFEQA::~AliAnalysisTaskHFEQA(){\r | |
237 | //\r | |
238 | // Destructor\r | |
239 | //\r | |
240 | \r | |
241 | \r | |
242 | if(fListHist) delete fListHist;\r | |
243 | if(fHFECuts) delete fHFECuts;\r | |
244 | if(fPIDTPConly) delete fPIDTPConly;\r | |
85358761 | 245 | if(fPIDTRDonly) delete fPIDTRDonly;\r |
b758ccbe | 246 | if(fPIDTOFTPC) delete fPIDTOFTPC;\r |
247 | if(fPIDTPCTRD) delete fPIDTPCTRD;\r | |
248 | if(fPIDTPCEMCal) delete fPIDTPCEMCal;\r | |
249 | \r | |
250 | \r | |
251 | }\r | |
252 | //________________________________________________________________________\r | |
253 | void AliAnalysisTaskHFEQA::UserCreateOutputObjects()\r | |
254 | {\r | |
255 | \r | |
256 | //********************\r | |
257 | // Create histograms\r | |
258 | //********************\r | |
259 | AliDebug(2,"AliAnalysisTaskHFEQA: User create output objects");\r | |
260 | \r | |
261 | \r | |
262 | // AOD or ESD\r | |
263 | AliVEventHandler *inputHandler = dynamic_cast<AliVEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r | |
264 | if(!TString(inputHandler->IsA()->GetName()).CompareTo("AliAODInputHandler")){\r | |
265 | SetAODAnalysis(kTRUE);\r | |
266 | AliDebug(2,"Put AOD analysis on");\r | |
267 | } else {\r | |
268 | SetAODAnalysis(kFALSE);\r | |
269 | }\r | |
270 | \r | |
271 | AliDebug(2,"AliAnalysisTaskHFEQA: AOD ESD");\r | |
272 | \r | |
273 | // HFE cuts\r | |
274 | \r | |
275 | if(!fHFECuts){\r | |
276 | fHFECuts = new AliHFEcuts;\r | |
277 | fHFECuts->CreateStandardCuts();\r | |
278 | }\r | |
279 | fHFECuts->Initialize();\r | |
280 | if(fAODAnalysis) {\r | |
281 | fHFECuts->SetAOD();\r | |
282 | } \r | |
283 | \r | |
284 | AliDebug(2,"AliAnalysisTaskHFEQA: HFE cuts");\r | |
285 | \r | |
286 | \r | |
287 | // PIDTPConly HFE\r | |
288 | if(!fPIDTPConly) {\r | |
85358761 | 289 | fPIDTPConly =new AliHFEpid("hfePidTPConly");\r |
b758ccbe | 290 | }\r |
291 | if(!fPIDTPConly->GetNumberOfPIDdetectors()) fPIDTPConly->AddDetector("TPC", 0);\r | |
292 | fPIDTPConly->InitializePID();\r | |
293 | fPIDTPConly->SortDetectors();\r | |
294 | \r | |
85358761 | 295 | // PIDTRDonly HFE\r |
296 | if(!fPIDTRDonly) {\r | |
297 | fPIDTRDonly =new AliHFEpid("hfePidTRDonly");\r | |
298 | }\r | |
299 | if(!fPIDTRDonly->GetNumberOfPIDdetectors()) fPIDTRDonly->AddDetector("TRD", 0);\r | |
300 | fPIDTRDonly->InitializePID();\r | |
301 | fPIDqaTRDonly->Initialize(fPIDTRDonly);\r | |
302 | fPIDTRDonly->SortDetectors();\r | |
303 | \r | |
b758ccbe | 304 | // PIDTOFTPC HFE\r |
305 | if(!fPIDTOFTPC) {\r | |
306 | fPIDTOFTPC =new AliHFEpid("hfePidTOFTPC");\r | |
307 | }\r | |
308 | if(!fPIDTOFTPC->GetNumberOfPIDdetectors()) {\r | |
309 | fPIDTOFTPC->AddDetector("TOF", 0);\r | |
310 | fPIDTOFTPC->AddDetector("TPC", 1);\r | |
311 | }\r | |
312 | fPIDTOFTPC->InitializePID();\r | |
313 | fPIDqaTOFTPC->Initialize(fPIDTOFTPC);\r | |
314 | fPIDTOFTPC->SortDetectors();\r | |
315 | \r | |
316 | \r | |
317 | // PIDTPCTRD HFE\r | |
318 | if(!fPIDTPCTRD) {\r | |
319 | fPIDTPCTRD =new AliHFEpid("hfePidTPCTRD");\r | |
320 | }\r | |
321 | if(!fPIDTPCTRD->GetNumberOfPIDdetectors()) {\r | |
322 | fPIDTPCTRD->AddDetector("TPC", 0);\r | |
323 | fPIDTPCTRD->AddDetector("TRD", 1);\r | |
324 | }\r | |
325 | fPIDTPCTRD->InitializePID();\r | |
326 | fPIDqaTPCTRD->Initialize(fPIDTPCTRD);\r | |
327 | fPIDTPCTRD->SortDetectors();\r | |
328 | \r | |
329 | // PIDTPCEMCal HFE\r | |
330 | if(!fPIDTPCEMCal) {\r | |
331 | fPIDTPCEMCal =new AliHFEpid("hfePidTPCEMCal");\r | |
332 | }\r | |
333 | if(!fPIDTPCEMCal->GetNumberOfPIDdetectors()) {\r | |
334 | fPIDTPCEMCal->AddDetector("TPC", 0);\r | |
335 | fPIDTPCEMCal->AddDetector("EMCal", 1);\r | |
336 | }\r | |
337 | fPIDTPCEMCal->InitializePID();\r | |
338 | fPIDqaTPCEMCal->Initialize(fPIDTPCEMCal);\r | |
339 | fPIDTPCEMCal->SortDetectors();\r | |
340 | \r | |
341 | // Histograms\r | |
85358761 | 342 | fNbEvent = new TH1F("NbEvent", "",11,0,11);\r |
343 | fNbEvent->Sumw2();\r | |
b758ccbe | 344 | Double_t ptbinning[36] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};\r |
345 | fTPConly = new TH1F("TPCOnly", "",35,&ptbinning[0]);\r | |
346 | fTPConly->Sumw2();\r | |
347 | fTOFTPC = new TH1F("TOFTPC", "",35,&ptbinning[0]);\r | |
348 | fTOFTPC->Sumw2();\r | |
349 | fTPCTRD = new TH1F("TPCTRD", "",35,&ptbinning[0]);\r | |
350 | fTPCTRD->Sumw2();\r | |
351 | fTPCEMCal = new TH1F("TPCEMCal", "",35,&ptbinning[0]);\r | |
352 | fTPCEMCal->Sumw2();\r | |
353 | \r | |
354 | \r | |
355 | // List\r | |
356 | \r | |
357 | fListHist = new TList();\r | |
358 | fListHist->SetOwner();\r | |
359 | \r | |
85358761 | 360 | fListHist->Add(fPIDqaTRDonly->MakeList("HFEpidQATRDonly"));\r |
b758ccbe | 361 | fListHist->Add(fPIDqaTOFTPC->MakeList("HFEpidQATOFTPC"));\r |
362 | fListHist->Add(fPIDqaTPCTRD->MakeList("HFEpidQATPCTRD"));\r | |
363 | fListHist->Add(fPIDqaTPCEMCal->MakeList("HFEpidQATPCEMCal"));\r | |
364 | \r | |
85358761 | 365 | fListHist->Add(fNbEvent);\r |
b758ccbe | 366 | fListHist->Add(fTPConly);\r |
367 | fListHist->Add(fTOFTPC);\r | |
368 | fListHist->Add(fTPCTRD);\r | |
369 | fListHist->Add(fTPCEMCal);\r | |
370 | \r | |
371 | AliDebug(2,"AliAnalysisTaskHFEQA: list");\r | |
372 | \r | |
373 | \r | |
374 | fListHist->Print();\r | |
375 | \r | |
376 | PostData(1, fListHist);\r | |
377 | \r | |
378 | AliDebug(2,"AliAnalysisTaskHFEQA: post");\r | |
379 | \r | |
380 | \r | |
381 | }\r | |
382 | \r | |
383 | //________________________________________________________________________\r | |
384 | void AliAnalysisTaskHFEQA::UserExec(Option_t */*option*/)\r | |
385 | {\r | |
386 | //\r | |
387 | // Loop over event\r | |
388 | //\r | |
389 | \r | |
390 | Double_t binct = 11.5;\r | |
391 | \r | |
392 | AliMCEvent *mcEvent = MCEvent();\r | |
393 | \r | |
3cd4d968 | 394 | \r |
395 | AliDebug(2,"MC info");\r | |
b758ccbe | 396 | // MC info\r |
397 | Bool_t mcthere = kTRUE;\r | |
398 | if(fAODAnalysis) {\r | |
399 | AliAODEvent *aodE = dynamic_cast<AliAODEvent *>(fInputEvent);\r | |
400 | if(!aodE){\r | |
401 | AliError("No AOD Event");\r | |
402 | return;\r | |
403 | }\r | |
404 | fAODMCHeader = dynamic_cast<AliAODMCHeader *>(fInputEvent->FindListObject(AliAODMCHeader::StdBranchName()));\r | |
405 | if(!fAODMCHeader){ \r | |
406 | mcthere = kFALSE;\r | |
407 | }\r | |
408 | fAODArrayMCInfo = dynamic_cast<TClonesArray *>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));\r | |
409 | if(!fAODArrayMCInfo){ \r | |
410 | mcthere = kFALSE;\r | |
411 | }\r | |
412 | else {\r | |
413 | fHFECuts->SetMCEvent(aodE);\r | |
414 | }\r | |
415 | }\r | |
416 | else {\r | |
417 | AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());\r | |
418 | if(!mcH){\r | |
419 | mcthere=kFALSE;\r | |
420 | }\r | |
421 | if(mcEvent) fHFECuts->SetMCEvent(mcEvent);\r | |
422 | }\r | |
423 | \r | |
424 | \r | |
425 | ////////////////////////////////////\r | |
426 | // Number of contributors\r | |
427 | ///////////////////////////////////\r | |
3cd4d968 | 428 | AliDebug(2,"Number of contributors");\r |
b758ccbe | 429 | Int_t ncontribVtx = 0;\r |
430 | if(fAODAnalysis) {\r | |
431 | AliAODEvent *fAOD = dynamic_cast<AliAODEvent *>(fInputEvent);\r | |
432 | if(!fAOD){\r | |
433 | AliError("AOD Event required for AOD Analysis");\r | |
434 | return;\r | |
435 | } \r | |
436 | AliAODVertex *priVtx = fAOD->GetPrimaryVertex();\r | |
437 | if(priVtx){\r | |
438 | ncontribVtx = priVtx->GetNContributors();\r | |
439 | }\r | |
440 | }\r | |
441 | else {\r | |
442 | AliESDEvent *fESD = dynamic_cast<AliESDEvent *>(fInputEvent);\r | |
443 | if(!fESD){\r | |
444 | AliError("ESD Event required for ESD Analysis");\r | |
445 | return;\r | |
446 | }\r | |
447 | const AliESDVertex *priVtx = fESD->GetPrimaryVertexTracks();\r | |
448 | if(priVtx){\r | |
449 | ncontribVtx = priVtx->GetNContributors();\r | |
450 | }\r | |
451 | }\r | |
3cd4d968 | 452 | AliDebug(2,Form("Number of contributors %d",ncontribVtx));\r |
b758ccbe | 453 | \r |
454 | \r | |
455 | /////////////////////////////////\r | |
456 | // centrality\r | |
457 | ////////////////////////////////\r | |
458 | \r | |
459 | //printf("Centrality \n");\r | |
460 | AliCentrality *centrality = fInputEvent->GetCentrality();\r | |
461 | AliDebug(2,"Got the centrality");\r | |
462 | Float_t cntr = 0.;\r | |
463 | if(centrality && (! Ispp())) { \r | |
464 | cntr = centrality->GetCentralityPercentile(fCentralityEstimator.Data());\r | |
465 | if((0.0< cntr) && (cntr<5.0)) binct = 0.5;\r | |
466 | if((5.0< cntr) && (cntr<10.0)) binct = 1.5;\r | |
467 | if((10.0< cntr) && (cntr<20.0)) binct = 2.5;\r | |
468 | if((20.0< cntr) && (cntr<30.0)) binct = 3.5;\r | |
469 | if((30.0< cntr) && (cntr<40.0)) binct = 4.5;\r | |
470 | if((40.0< cntr) && (cntr<50.0)) binct = 5.5;\r | |
471 | if((50.0< cntr) && (cntr<60.0)) binct = 6.5;\r | |
472 | if((60.0< cntr) && (cntr<70.0)) binct = 7.5;\r | |
473 | if((70.0< cntr) && (cntr<80.0)) binct = 8.5;\r | |
474 | if((80.0< cntr) && (cntr<90.0)) binct = 9.5;\r | |
475 | if((90.0< cntr) && (cntr<100.0)) binct = 10.5;\r | |
476 | if(binct > 11.0) return;\r | |
477 | }\r | |
85358761 | 478 | else binct = 0.5;\r |
3cd4d968 | 479 | AliDebug(2,Form("Centrality %f with %s",binct,fCentralityEstimator.Data()));\r |
b758ccbe | 480 | \r |
481 | //////////////////////\r | |
482 | // run number\r | |
483 | //////////////////////\r | |
484 | \r | |
485 | Int_t runnumber = fInputEvent->GetRunNumber();\r | |
486 | AliDebug(2,Form("Run number %d",runnumber));\r | |
487 | \r | |
488 | if(!fPIDTPConly->IsInitialized()){\r | |
489 | fPIDTPConly->InitializePID(runnumber);\r | |
490 | }\r | |
85358761 | 491 | if(!fPIDTRDonly->IsInitialized()){\r |
492 | fPIDTRDonly->InitializePID(runnumber);\r | |
493 | }\r | |
b758ccbe | 494 | if(!fPIDTOFTPC->IsInitialized()){\r |
495 | fPIDTOFTPC->InitializePID(runnumber);\r | |
496 | }\r | |
497 | if(!fPIDTPCTRD->IsInitialized()){\r | |
498 | fPIDTPCTRD->InitializePID(runnumber);\r | |
499 | }\r | |
500 | if(!fPIDTPCEMCal->IsInitialized()){\r | |
501 | fPIDTPCEMCal->InitializePID(runnumber);\r | |
502 | }\r | |
503 | \r | |
504 | //\r | |
505 | fHFECuts->SetRecEvent(fInputEvent);\r | |
506 | \r | |
507 | \r | |
508 | \r | |
509 | //////////\r | |
510 | // PID\r | |
511 | //////////\r | |
3cd4d968 | 512 | AliDebug(2,"PID response");\r |
b758ccbe | 513 | AliPIDResponse *pidResponse = fInputHandler->GetPIDResponse();\r |
514 | if(!pidResponse){\r | |
515 | AliDebug(2,"No PID response set");\r | |
516 | return;\r | |
517 | }\r | |
518 | fPIDTPConly->SetPIDResponse(pidResponse);\r | |
85358761 | 519 | fPIDTRDonly->SetPIDResponse(pidResponse);\r |
b758ccbe | 520 | fPIDTOFTPC->SetPIDResponse(pidResponse);\r |
521 | fPIDTPCTRD->SetPIDResponse(pidResponse);\r | |
522 | fPIDTPCEMCal->SetPIDResponse(pidResponse);\r | |
523 | \r | |
524 | //////////////////\r | |
525 | // Event cut\r | |
526 | //////////////////\r | |
3cd4d968 | 527 | AliDebug(2,"Event cut");\r |
b758ccbe | 528 | if(!fHFECuts->CheckEventCuts("fEvRecCuts", fInputEvent)) {\r |
529 | AliDebug(2,"Does not pass the event cut");\r | |
530 | PostData(1, fListHist);\r | |
531 | return;\r | |
532 | }\r | |
85358761 | 533 | fNbEvent->Fill(binct);\r |
b758ccbe | 534 | \r |
535 | //////////////////////////\r | |
536 | // Loop over track\r | |
537 | //////////////////////////\r | |
538 | Int_t nbtracks = fInputEvent->GetNumberOfTracks();\r | |
3cd4d968 | 539 | AliDebug(2,Form("Number of tracks %d",nbtracks));\r |
b758ccbe | 540 | for(Int_t k = 0; k < nbtracks; k++){\r |
541 | \r | |
542 | AliVTrack *track = (AliVTrack *) fInputEvent->GetTrack(k);\r | |
543 | if(!track) continue;\r | |
544 | Double_t pt = track->Pt(); \r | |
545 | \r | |
3cd4d968 | 546 | AliDebug(2,"test 0\n");\r |
b758ccbe | 547 | \r |
548 | // RecKine: ITSTPC cuts \r | |
549 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepRecKineITSTPC + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 550 | AliDebug(2,"test 1\n");\r |
b758ccbe | 551 | \r |
552 | // RecPrim\r | |
553 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepRecPrim + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 554 | AliDebug(2,"test 2\n");\r |
b758ccbe | 555 | \r |
556 | // HFEcuts: ITS layers cuts\r | |
557 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepHFEcutsITS + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 558 | AliDebug(2,"test 3\n");\r |
b758ccbe | 559 | \r |
560 | // HFE cuts: TOF and mismatch flag\r | |
561 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepHFEcutsTOF + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 562 | AliDebug(2,"test 4\n");\r |
b758ccbe | 563 | \r |
564 | // HFE cuts: TPC PID cleanup\r | |
565 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepHFEcutsTPC + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 566 | AliDebug(2,"test 5\n");\r |
b758ccbe | 567 | \r |
568 | // HFEcuts: Nb of tracklets TRD0\r | |
569 | if(!fHFECuts->CheckParticleCuts(AliHFEcuts::kStepHFEcutsTRD + AliHFEcuts::kNcutStepsMCTrack, (TObject *)track)) continue;\r | |
3cd4d968 | 570 | \r |
b758ccbe | 571 | AliDebug(2,"Survived");\r |
3cd4d968 | 572 | \r |
b758ccbe | 573 | \r |
574 | ////////////////////////\r | |
575 | // Apply PID\r | |
576 | ////////////////////////\r | |
577 | AliHFEpidObject hfetrack;\r | |
578 | if(!fAODAnalysis) hfetrack.SetAnalysisType(AliHFEpidObject::kESDanalysis);\r | |
579 | else hfetrack.SetAnalysisType(AliHFEpidObject::kAODanalysis);\r | |
580 | hfetrack.SetRecTrack(track);\r | |
581 | hfetrack.SetCentrality((Int_t)binct);\r | |
582 | hfetrack.SetMulitplicity(ncontribVtx); // for correction\r | |
583 | if(IsPbPb()) hfetrack.SetPbPb();\r | |
584 | else{\r | |
585 | if(IspPb()) hfetrack.SetpPb();\r | |
586 | else {\r | |
587 | hfetrack.SetPP();\r | |
588 | //printf("pp\n");\r | |
589 | }\r | |
590 | }\r | |
591 | AliDebug(2,Form("centrality %f and %d",binct,hfetrack.GetCentrality()));\r | |
592 | \r | |
593 | //printf("test 7\n");\r | |
594 | \r | |
595 | // Complete PID TPC alone\r | |
890e8a53 | 596 | if(fTPConlydo) {\r |
597 | if(fPIDTPConly->IsSelected(&hfetrack,0x0,"recTrackCont",0x0)) {\r | |
598 | fTPConly->Fill(pt);\r | |
599 | }\r | |
b758ccbe | 600 | }\r |
3cd4d968 | 601 | AliDebug(2,"TPC only PID\n");\r |
85358761 | 602 | \r |
603 | // Complete PID TRD alone\r | |
604 | if(fTRDonlydo) {\r | |
605 | if(fPIDTRDonly->IsSelected(&hfetrack,0x0,"recTrackCont",fPIDqaTRDonly)) {\r | |
606 | AliDebug(2,"Passed TRD only PID\n");\r | |
607 | }\r | |
608 | }\r | |
609 | AliDebug(2,"TRD only PID\n");\r | |
3cd4d968 | 610 | \r |
b758ccbe | 611 | \r |
612 | // Complete PID TPC TOF \r | |
890e8a53 | 613 | if(fTOFTPCdo) {\r |
614 | if(fPIDTOFTPC->IsSelected(&hfetrack,0x0,"recTrackCont",fPIDqaTOFTPC)) {\r | |
615 | fTOFTPC->Fill(pt);\r | |
616 | }\r | |
b758ccbe | 617 | }\r |
890e8a53 | 618 | AliDebug(2,"TOF TPC PID\n");\r |
b758ccbe | 619 | \r |
620 | // Complete PID TPC TRD \r | |
890e8a53 | 621 | if(fTPCTRDdo) {\r |
622 | if(fPIDTPCTRD->IsSelected(&hfetrack,0x0,"recTrackCont",fPIDqaTPCTRD)) {\r | |
623 | fTPCTRD->Fill(pt);\r | |
624 | }\r | |
b758ccbe | 625 | }\r |
3cd4d968 | 626 | AliDebug(2,"TPC TRD PID\n");\r |
b758ccbe | 627 | \r |
628 | \r | |
890e8a53 | 629 | if(fTPCEMCaldo) {\r |
630 | if(!fAODAnalysis) {\r | |
631 | // Complete PID TPC TRD \r | |
632 | if(fPIDTPCEMCal->IsSelected(&hfetrack,0x0,"recTrackCont",fPIDqaTPCEMCal)) {\r | |
633 | fTPCEMCal->Fill(pt);\r | |
634 | }\r | |
b758ccbe | 635 | }\r |
636 | }\r | |
3cd4d968 | 637 | AliDebug(2,"TPC EMCal PID\n");\r |
b758ccbe | 638 | \r |
639 | \r | |
640 | }\r | |
641 | \r | |
642 | PostData(1, fListHist);\r | |
643 | \r | |
644 | }\r |