]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/AliAnalysisTaskHFEQA.cxx
Changed and of line style
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskHFEQA.cxx
CommitLineData
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
67ClassImp(AliAnalysisTaskHFEQA)\r
68\r
69//____________________________________________________________________\r
70AliAnalysisTaskHFEQA::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
103AliAnalysisTaskHFEQA:: 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
154AliAnalysisTaskHFEQA::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
191AliAnalysisTaskHFEQA &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
201void 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
236AliAnalysisTaskHFEQA::~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
253void 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
384void 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