]>
Commit | Line | Data |
---|---|---|
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 | ||
31 | class iostream; | |
32 | ||
33 | using namespace std; | |
34 | ||
35 | ClassImp(AliAnalysisTaskMaterial) | |
36 | ||
72395bd9 | 37 | AliAnalysisTaskMaterial::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 | //________________________________________________________________________ |
78 | AliAnalysisTaskMaterial::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 | //________________________________________________________________________ | |
121 | AliAnalysisTaskMaterial::~AliAnalysisTaskMaterial() | |
122 | { | |
63674d67 | 123 | // default deconstructor |
ca91a3e1 | 124 | } |
125 | //________________________________________________________________________ | |
126 | void 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 | //________________________________________________________________________ | |
201 | void 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 | ///________________________________________________________________________ |
269 | void 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 | ///________________________________________________________________________ | |
303 | void 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 | ///________________________________________________________________________ | |
327 | void 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 | 433 | Int_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 | 481 | Int_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 | //________________________________________________________________________ |
542 | void AliAnalysisTaskMaterial::Terminate(Option_t *) | |
543 | { | |
0a2b2b4b | 544 | // if (fStreamMaterial){ |
545 | // fStreamMaterial->GetFile()->Write(); | |
546 | // } | |
ca91a3e1 | 547 | } |