]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/AliAnalysisTaskMaterial.cxx
improved GenEventHeader() method in case of AOD
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAnalysisTaskMaterial.cxx
CommitLineData
ca91a3e1 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Authors: Friederike Bock *
5 * Version 1.0 *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16////////////////////////////////////////////////
17//---------------------------------------------
18// QA Task for V0 Reader V1
19//---------------------------------------------
20////////////////////////////////////////////////
21
22#include "AliAnalysisTaskMaterial.h"
23#include "TChain.h"
24#include "AliAnalysisManager.h"
25#include "TParticle.h"
26#include "TVectorF.h"
27#include "AliPIDResponse.h"
28#include "AliESDtrackCuts.h"
29#include "TFile.h"
30
31class iostream;
32
33using namespace std;
34
35ClassImp(AliAnalysisTaskMaterial)
36
72395bd9 37AliAnalysisTaskMaterial::AliAnalysisTaskMaterial() : AliAnalysisTaskSE(),
38 fV0Reader(NULL),
39 fConversionGammas(NULL),
40 fConversionCuts(NULL),
41 fOutputList(NULL),
42 fEventList(NULL),
43 fRecGammaList(NULL),
44 fAllMCGammaList(NULL),
45 fAllMCConvGammaList(NULL),
46 fTreeEvent(NULL),
47 fTreeMaterialRec(NULL),
48 fTreeMaterialAllGamma(NULL),
49 fTreeMaterialConvGamma(NULL),
50 fPrimVtxZ(0.),
51 fNContrVtx(0),
52 fNESDtracksEta09(0),
53 fNESDtracksEta0914(0),
54 fNESDtracksEta14(0),
55 fGammaMCPt(0.),
56 fGammaMCTheta(0.),
57 fGammaMCConvPt(0.),
58 fGammaMCConvTheta(0.),
31216736 59 fMCConvCords(5),
60 fMCConvDaughterProp(4),
72395bd9 61 fGammaPt(0.),
62 fGammaTheta(0.),
63 fGammaChi2NDF(0.),
31216736 64 fRecCords(5),
65 fDaughterProp(4),
72395bd9 66 fKind(0),
63674d67 67 fIsHeavyIon(0),
72395bd9 68 fIsMC(kFALSE),
69 fESDEvent(NULL),
70 fMCEvent(NULL)
71{
72
73
74}
75
76
ca91a3e1 77//________________________________________________________________________
78AliAnalysisTaskMaterial::AliAnalysisTaskMaterial(const char *name) : AliAnalysisTaskSE(name),
a280ac15 79 fV0Reader(NULL),
ca91a3e1 80 fConversionGammas(NULL),
81 fConversionCuts(NULL),
ca91a3e1 82 fOutputList(NULL),
72395bd9 83 fEventList(NULL),
84 fRecGammaList(NULL),
85 fAllMCGammaList(NULL),
86 fAllMCConvGammaList(NULL),
87 fTreeEvent(NULL),
88 fTreeMaterialRec(NULL),
89 fTreeMaterialAllGamma(NULL),
90 fTreeMaterialConvGamma(NULL),
91 fPrimVtxZ(0.),
92 fNContrVtx(0),
93 fNESDtracksEta09(0),
94 fNESDtracksEta0914(0),
95 fNESDtracksEta14(0),
96 fGammaMCPt(0.),
97 fGammaMCTheta(0.),
98 fGammaMCConvPt(0.),
99 fGammaMCConvTheta(0.),
31216736 100 fMCConvCords(5),
101 fMCConvDaughterProp(4),
72395bd9 102 fGammaPt(0.),
103 fGammaTheta(0.),
104 fGammaChi2NDF(0.),
31216736 105 fRecCords(5),
106 fDaughterProp(4),
72395bd9 107 fKind(0),
63674d67 108 fIsHeavyIon(0),
72395bd9 109 fIsMC(kFALSE),
ca91a3e1 110 fESDEvent(NULL),
111 fMCEvent(NULL)
112{
63674d67 113 // Default constructor
ca91a3e1 114
63674d67 115
116 DefineInput(0, TChain::Class());
117 DefineOutput(1, TList::Class());
ca91a3e1 118}
119
120//________________________________________________________________________
121AliAnalysisTaskMaterial::~AliAnalysisTaskMaterial()
122{
63674d67 123 // default deconstructor
ca91a3e1 124}
125//________________________________________________________________________
126void AliAnalysisTaskMaterial::UserCreateOutputObjects()
127{
63674d67 128 // Create User Output Objects
ca91a3e1 129
63674d67 130 if(fOutputList != NULL){
131 delete fOutputList;
132 fOutputList = NULL;
133 }
134 if(fOutputList == NULL){
135 fOutputList = new TList();
136 fOutputList->SetOwner(kTRUE);
137 }
138
139 fEventList = new TList();
140 fEventList->SetName("EventList");
141 fEventList->SetOwner(kTRUE);
142 fOutputList->Add(fEventList);
143
144 fTreeEvent = new TTree("Event","Event");
145 fTreeEvent->Branch("primVtxZ",&fPrimVtxZ,"fPrimVtxZ/F");
146 fTreeEvent->Branch("nContrVtx",&fNContrVtx,"fNContrVtx/I");
147 fTreeEvent->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
148 fTreeEvent->Branch("nGoodTracksEta0914",&fNESDtracksEta0914,"fNESDtracksEta0914/I");
149 fTreeEvent->Branch("nGoodTracksEta14",&fNESDtracksEta14,"fNESDtracksEta14/I");
150 fEventList->Add(fTreeEvent);
151
152 fRecGammaList= new TList();
153 fRecGammaList->SetName("RecGammaList");
154 fRecGammaList->SetOwner(kTRUE);
155 fOutputList->Add(fRecGammaList);
156
157 fTreeMaterialRec = new TTree("ConvPointRec","ConvPointRec");
158 fTreeMaterialRec->Branch("recCords",&fRecCords);
159 fTreeMaterialRec->Branch("daughterProp",&fDaughterProp);
160 fTreeMaterialRec->Branch("pt",&fGammaPt,"fGammaPt/F");
161 fTreeMaterialRec->Branch("theta",&fGammaTheta,"fGammaTheta/F");
162 fTreeMaterialRec->Branch("chi2ndf",&fGammaChi2NDF,"fGammaChi2NDF/F");
163 if (fIsMC) {
164 fTreeMaterialRec->Branch("kind",&fKind,"fKind/b");
165 }
166 fRecGammaList->Add(fTreeMaterialRec);
167
168 if (fIsMC) {
169 fAllMCGammaList = new TList();
170 fAllMCGammaList->SetName("AllMCGammaList");
171 fAllMCGammaList->SetOwner(kTRUE);
172 fOutputList->Add(fAllMCGammaList);
173
174 fTreeMaterialAllGamma = new TTree("AllGamma","AllGamma");
175 fTreeMaterialAllGamma->Branch("pt",&fGammaMCPt,"fGammaMCPt/F");
176 fTreeMaterialAllGamma->Branch("theta",&fGammaMCTheta,"fGammaMCTheta/F");
177 fAllMCGammaList->Add(fTreeMaterialAllGamma);
178
179 fAllMCConvGammaList = new TList();
180 fAllMCConvGammaList->SetName("AllMCGammaConvList");
181 fAllMCConvGammaList->SetOwner(kTRUE);
182 fOutputList->Add(fAllMCConvGammaList);
72395bd9 183
63674d67 184 // fMCConvCords = new Float_t[5];
185 // fMCConvDaughterProp = new Float_t[4];
ca91a3e1 186
63674d67 187
188 fTreeMaterialConvGamma = new TTree("ConvGammaMC","ConvGammaMC");
189 fTreeMaterialConvGamma->Branch("Cords",&fMCConvCords);
190 fTreeMaterialConvGamma->Branch("daughterProp",&fMCConvDaughterProp);
191 fTreeMaterialConvGamma->Branch("Pt",&fGammaMCConvPt,"fGammaMCConvPt/F");
192 fTreeMaterialConvGamma->Branch("Theta",&fGammaMCConvTheta,"fGammaMCConvTheta/F");
193 fAllMCConvGammaList->Add(fTreeMaterialConvGamma);
194 }
195
196 PostData(1, fOutputList);
72395bd9 197
ca91a3e1 198}
199
200//________________________________________________________________________
201void AliAnalysisTaskMaterial::UserExec(Option_t *){
202
51ead2dc 203 fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
ca91a3e1 204
51ead2dc 205 Int_t eventQuality = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetEventQuality();
206 if(eventQuality != 0){// Event Not Accepted
207 return;
208 }
209 fESDEvent = (AliESDEvent*) InputEvent();
210 if (fESDEvent==NULL) return;
211 if(MCEvent()){
212 fMCEvent = MCEvent();
213 }
214
215 if(MCEvent()){
216 // Process MC Particle
217 if(fConversionCuts->GetSignalRejection() != 0){
218// if(fESDEvent->IsA()==AliESDEvent::Class()){
219 fConversionCuts->GetNotRejectedParticles( fConversionCuts->GetSignalRejection(),
220 fConversionCuts->GetAcceptedHeader(),
221 fMCEvent);
222// }
223// else if(fInputEvent->IsA()==AliAODEvent::Class()){
224// fConversionCuts->GetNotRejectedParticles( fConversionCuts->GetSignalRejection(),
225// fConversionCuts->GetAcceptedHeader(),
226// fInputEvent);
227// }
228 }
229 }
230
63674d67 231 if(fIsHeavyIon > 0 && !fConversionCuts->IsCentralitySelected(fESDEvent)) return;
72395bd9 232 fNESDtracksEta09 = CountTracks09(); // Estimate Event Multiplicity
233 fNESDtracksEta0914 = CountTracks0914(); // Estimate Event Multiplicity
234 fNESDtracksEta14 = fNESDtracksEta09 + fNESDtracksEta0914;
ca91a3e1 235 if(fESDEvent){
236 if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()>0) {
72395bd9 237 fNContrVtx = fESDEvent->GetPrimaryVertexTracks()->GetNContributors();
51ead2dc 238 } else {
239 fNContrVtx = 0;
240 }
241// else if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()<1) {
242// if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
243// fNContrVtx = fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
244// } else if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()<1) {
245// fNContrVtx = 0;
246// }
247// }
248 }
72395bd9 249 fPrimVtxZ = fESDEvent->GetPrimaryVertex()->GetZ();
ca91a3e1 250
63674d67 251 if (fIsHeavyIon == 2){
51ead2dc 252 if (!(fNESDtracksEta09 > 20 && fNESDtracksEta09 < 80)) return;
253 }
ca91a3e1 254
51ead2dc 255
256 if (fTreeEvent){
257 fTreeEvent->Fill();
ca91a3e1 258 }
51ead2dc 259
260 fConversionGammas=fV0Reader->GetReconstructedGammas();
261 ProcessPhotons();
ca91a3e1 262 if(MCEvent()){
263 ProcessMCPhotons();
264 }
51ead2dc 265 PostData(1, fOutputList);
ca91a3e1 266}
267
e5b6e8a6 268///________________________________________________________________________
269void AliAnalysisTaskMaterial::FillMCTree(Int_t stackPos){
270 AliStack *MCStack = fMCEvent->Stack();
271 TParticle* candidate = (TParticle *)MCStack->Particle(stackPos);
51ead2dc 272
e5b6e8a6 273 if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kFALSE)){
72395bd9 274 fGammaMCPt = candidate->Pt();
275 fGammaMCTheta = candidate->Theta();
276 if (fTreeMaterialAllGamma){
277 fTreeMaterialAllGamma->Fill();
e5b6e8a6 278 }
279 }
280 if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kTRUE)){
72395bd9 281 fGammaMCConvPt = candidate->Pt();
282 fGammaMCConvTheta = candidate->Theta();
e5b6e8a6 283 TParticle* daughter1 = (TParticle *)MCStack->Particle(candidate->GetFirstDaughter());
284 TParticle* daughter2 = (TParticle *)MCStack->Particle(candidate->GetLastDaughter());
51ead2dc 285 fMCConvCords(0) = (Float_t)daughter1->Vx();
286 fMCConvCords(1) = (Float_t)daughter1->Vy();
287 fMCConvCords(2) = (Float_t)daughter1->Vz();
288 fMCConvCords(3) = (Float_t)daughter1->R();
289 fMCConvCords(4) = (Float_t)daughter1->Phi();
72395bd9 290
51ead2dc 291 fMCConvDaughterProp(0) = (Float_t)daughter1->Pt();
292 fMCConvDaughterProp(1) = (Float_t)daughter1->Theta();
293 fMCConvDaughterProp(2) = (Float_t)daughter2->Pt();
294 fMCConvDaughterProp(3) = (Float_t)daughter2->Theta();
295
72395bd9 296 if (fTreeMaterialConvGamma){
297 fTreeMaterialConvGamma->Fill();
e5b6e8a6 298 }
299 } // Converted MC Gamma
300}
ca91a3e1 301
302///________________________________________________________________________
303void AliAnalysisTaskMaterial::ProcessMCPhotons(){
304 // Loop over all primary MC particle
305 AliStack *ffMCStack = fMCEvent->Stack();
306 for(Int_t i = 0; i < ffMCStack->GetNprimary(); i++) {
307 TParticle* particle = (TParticle *)ffMCStack->Particle(i);
51ead2dc 308 if (!particle) continue;
309 Int_t isMCFromMBHeader = -1;
310 if(fConversionCuts->GetSignalRejection() != 0){
311 isMCFromMBHeader
312 = fConversionCuts->IsParticleFromBGEvent(i, ffMCStack, fESDEvent);
313 if(isMCFromMBHeader == 0) continue;
314 }
e5b6e8a6 315 if (particle->GetPdgCode() == 111 && particle->GetFirstDaughter() >= ffMCStack->GetNprimary()){
316// cout << "Undecayed pi0 found with mother: " << particle->GetMother(0) << endl;
317 for (Int_t j = 0; j < 2 ; j++){
318 FillMCTree(particle->GetDaughter(j));
ca91a3e1 319 }
e5b6e8a6 320 } else {
321 FillMCTree(i);
322 }
ca91a3e1 323 }
324}
325
326///________________________________________________________________________
327void AliAnalysisTaskMaterial::ProcessPhotons(){
328
51ead2dc 329 // Fill Histograms for QA and MC
330 for(Int_t firstGammaIndex=0;firstGammaIndex<fConversionGammas->GetEntriesFast();firstGammaIndex++){
331 AliAODConversionPhoton *gamma=dynamic_cast<AliAODConversionPhoton*>(fConversionGammas->At(firstGammaIndex));
332 if (gamma ==NULL) continue;
333 if(!fConversionCuts->PhotonIsSelected(gamma,fESDEvent)) continue;
72395bd9 334
51ead2dc 335 fGammaPt = gamma->GetPhotonPt();
72395bd9 336 fGammaTheta = gamma->GetPhotonTheta();
337 fGammaChi2NDF = gamma->GetChi2perNDF();
51ead2dc 338 fRecCords(0) = (Float_t)gamma->GetConversionX();
339 fRecCords(1) = (Float_t)gamma->GetConversionY();
340 fRecCords(2) = (Float_t)gamma->GetConversionZ();
341 fRecCords(3) = (Float_t)gamma->GetConversionRadius();
342 fRecCords(4) = (Float_t)gamma->GetPhotonPhi();
343
e5b6e8a6 344 AliESDtrack * negTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelNegative());
51ead2dc 345 AliESDtrack * posTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelPositive());
346 fDaughterProp(0) = (Float_t)posTrack->Pt();
347 fDaughterProp(1) = (Float_t)posTrack->Theta();
348 fDaughterProp(2) = (Float_t)negTrack->Pt();
349 fDaughterProp(3) = (Float_t)negTrack->Theta();
72395bd9 350
351 fKind = 9;
352
ca91a3e1 353 if(fMCEvent){
354// cout << "generating MC stack"<< endl;
355 AliStack *fMCStack = fMCEvent->Stack();
356 if (!fMCStack) continue;
357 TParticle *posDaughter = gamma->GetPositiveMCDaughter(fMCStack);
358 TParticle *negDaughter = gamma->GetNegativeMCDaughter(fMCStack);
359// cout << "generate Daughters: "<<posDaughter << "\t" << negDaughter << endl;
51ead2dc 360
361 if(fMCStack && fConversionCuts->GetSignalRejection() != 0){
362 Int_t isPosFromMBHeader
363 = fConversionCuts->IsParticleFromBGEvent(gamma->GetMCLabelPositive(), fMCStack, fESDEvent);
364 Int_t isNegFromMBHeader
365 = fConversionCuts->IsParticleFromBGEvent(gamma->GetMCLabelNegative(), fMCStack, fESDEvent);
366 if( (isNegFromMBHeader < 1) || (isPosFromMBHeader < 1)) continue;
367 }
368
ca91a3e1 369 if(posDaughter == NULL || negDaughter == NULL){
72395bd9 370 fKind = 9; // garbage
ca91a3e1 371// cout << "one of the daughters not available" << endl;
372 } else if(posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)){
373 // Not Same Mother == Combinatorial Bck
72395bd9 374 fKind = 1;
ca91a3e1 375// cout << "not the same mother" << endl;
376 Int_t pdgCodePos;
377 if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
378 Int_t pdgCodeNeg;
379 if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
380// cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
381 if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11)
72395bd9 382 fKind = 10; //Electron Combinatorial
ca91a3e1 383 if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11 && (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1))
72395bd9 384 fKind = 15; //direct Electron Combinatorial
ca91a3e1 385
386 if(TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==211)
72395bd9 387 fKind = 11; //Pion Combinatorial
ca91a3e1 388 if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==2212) ||
389 (TMath::Abs(pdgCodePos)==2212 && TMath::Abs(pdgCodeNeg)==211))
72395bd9 390 fKind = 12; //Pion, Proton Combinatorics
ca91a3e1 391 if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==11) ||
392 (TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==211))
72395bd9 393 fKind = 13; //Pion, Electron Combinatorics
ca91a3e1 394 if (TMath::Abs(pdgCodePos)==321 || TMath::Abs(pdgCodeNeg)==321)
72395bd9 395 fKind = 14; //Kaon combinatorics
ca91a3e1 396
397 } else {
398// cout << "same mother" << endl;
399 Int_t pdgCodePos;
400 if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
401 Int_t pdgCodeNeg;
402 if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
403// cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
404 Int_t pdgCode;
405 if (gamma->GetMCParticle(fMCStack)->GetPdgCode()) pdgCode = gamma->GetMCParticle(fMCStack)->GetPdgCode(); else continue;
406// cout << "PDG code: " << pdgCode << endl;
407 if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11)
72395bd9 408 fKind = 2; // combinatorics from hadronic decays
ca91a3e1 409 else if ( !(pdgCodeNeg==pdgCodePos)){
410 TParticle *truePhotonCanditate = gamma->GetMCParticle(fMCStack);
e5b6e8a6 411 Int_t motherLabelPhoton = truePhotonCanditate->GetMother(0);
ca91a3e1 412 if(pdgCode == 111)
72395bd9 413 fKind = 3; // pi0 Dalitz
ca91a3e1 414 else if (pdgCode == 221)
72395bd9 415 fKind = 4; // eta Dalitz
ca91a3e1 416 else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
e5b6e8a6 417 if(pdgCode == 22 && motherLabelPhoton < fMCStack->GetNprimary()){
72395bd9 418 fKind = 0; // primary photons
ca91a3e1 419 } else if (pdgCode == 22){
72395bd9 420 fKind = 5; //secondary photons
421 }
422 } else fKind = 9; //garbage
423 } else fKind = 9; //garbage
424 }
ca91a3e1 425 }
72395bd9 426 if (fTreeMaterialRec){
51ead2dc 427 fTreeMaterialRec->Fill();
428 }
ca91a3e1 429 }
430}
431
432//________________________________________________________________________
ae947965 433Int_t AliAnalysisTaskMaterial::CountTracks09(){
51ead2dc 434 Int_t fNumberOfESDTracks = 0;
435 if(fInputEvent->IsA()==AliESDEvent::Class()){
436 // Using standard function for setting Cuts
437
438 AliStack *fMCStack = NULL;
439 if (fMCEvent){
440 fMCStack= fMCEvent->Stack();
441 if (!fMCStack) return 0;
442 }
443
444 Bool_t selectPrimaries=kTRUE;
445 AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
446 EsdTrackCuts->SetMaxDCAToVertexZ(2);
447 EsdTrackCuts->SetEtaRange(-0.9, 0.9);
448 EsdTrackCuts->SetPtRange(0.15);
449
450 for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
451 AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
452 if(!curTrack) continue;
453 if(EsdTrackCuts->AcceptTrack(curTrack) ){
454 if (fMCEvent){
455 if(fMCStack && fConversionCuts->GetSignalRejection() != 0){
456 Int_t isFromMBHeader
457 = fConversionCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
458 if( (isFromMBHeader < 1) ) continue;
459 }
460 }
461 fNumberOfESDTracks++;
462 }
463 }
464 delete EsdTrackCuts;
465 EsdTrackCuts=0x0;
466 } else if(fInputEvent->IsA()==AliAODEvent::Class()){
467 for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
468 AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
469 if(!curTrack->IsPrimaryCandidate()) continue;
470 if(abs(curTrack->Eta())>0.9) continue;
471 if(curTrack->Pt()<0.15) continue;
472 if(abs(curTrack->ZAtDCA())>2) continue;
473 fNumberOfESDTracks++;
474 }
475 }
e5b6e8a6 476
51ead2dc 477 return fNumberOfESDTracks;
e5b6e8a6 478}
479
51ead2dc 480//________________________________________________________________________
ae947965 481Int_t AliAnalysisTaskMaterial::CountTracks0914(){
51ead2dc 482 Int_t fNumberOfESDTracks = 0;
483 if(fInputEvent->IsA()==AliESDEvent::Class()){
484 // Using standard function for setting Cuts
485
486 AliStack *fMCStack = NULL;
487 if (fMCEvent){
488 fMCStack= fMCEvent->Stack();
489 if (!fMCStack) return 0;
490 }
e5b6e8a6 491
51ead2dc 492 AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
493 EsdTrackCuts->SetMaxDCAToVertexZ(5);
494 EsdTrackCuts->SetEtaRange(0.9, 1.4);
495 EsdTrackCuts->SetPtRange(0.15);
496
497 for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
498 AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
499 if(!curTrack) continue;
500 if(EsdTrackCuts->AcceptTrack(curTrack) ){
501 if (fMCEvent){
502 if(fMCStack && fConversionCuts->GetSignalRejection() != 0){
503 Int_t isFromMBHeader
504 = fConversionCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
505 if( (isFromMBHeader < 1) ) continue;
506 }
507 }
508 fNumberOfESDTracks++;
509 }
510 }
511 EsdTrackCuts->SetEtaRange(-1.4, -0.9);
512 for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){
513 AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks);
514 if(!curTrack) continue;
515 if(EsdTrackCuts->AcceptTrack(curTrack) ){
516 if (fMCEvent){
517 if(fMCStack && fConversionCuts->GetSignalRejection() != 0){
518 Int_t isFromMBHeader
519 = fConversionCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
520 if( (isFromMBHeader < 1) ) continue;
521 }
522 }
523 fNumberOfESDTracks++;
524 }
525 }
526 delete EsdTrackCuts;
527 EsdTrackCuts=0x0;
528 } else if(fInputEvent->IsA()==AliAODEvent::Class()){
529 for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
530 AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
531 if(abs(curTrack->Eta())<0.9 || abs(curTrack->Eta())>1.4 ) continue;
532 if(curTrack->Pt()<0.15) continue;
533 if(abs(curTrack->ZAtDCA())>5) continue;
534 fNumberOfESDTracks++;
535 }
536 }
537
538 return fNumberOfESDTracks;
ca91a3e1 539}
540
ca91a3e1 541//________________________________________________________________________
542void AliAnalysisTaskMaterial::Terminate(Option_t *)
543{
0a2b2b4b 544// if (fStreamMaterial){
545// fStreamMaterial->GetFile()->Write();
546// }
ca91a3e1 547}