]>
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(), |
344100c4 | 38 | fV0Reader(NULL), |
39 | fConversionGammas(NULL), | |
40 | fConversionCuts(NULL), | |
41 | fEventCuts(NULL), | |
42 | fOutputList(NULL), | |
43 | fEventList(NULL), | |
44 | fRecGammaList(NULL), | |
45 | fAllMCGammaList(NULL), | |
46 | fAllMCConvGammaList(NULL), | |
47 | fTreeEvent(NULL), | |
48 | fTreeMaterialRec(NULL), | |
49 | fTreeMaterialAllGamma(NULL), | |
50 | fTreeMaterialConvGamma(NULL), | |
51 | fPrimVtxZ(0.), | |
52 | fNContrVtx(0), | |
53 | fNESDtracksEta09(0), | |
54 | fNESDtracksEta0914(0), | |
55 | fNESDtracksEta14(0), | |
56 | fGammaMCPt(0.), | |
57 | fGammaMCTheta(0.), | |
58 | fGammaMCConvPt(0.), | |
59 | fGammaMCConvTheta(0.), | |
60 | fMCConvCords(5), | |
61 | fMCConvDaughterProp(4), | |
62 | fGammaPt(0.), | |
63 | fGammaTheta(0.), | |
64 | fGammaChi2NDF(0.), | |
65 | fRecCords(5), | |
66 | fDaughterProp(4), | |
67 | fKind(0), | |
68 | fIsHeavyIon(0), | |
69 | fIsMC(kFALSE), | |
70 | fESDEvent(NULL), | |
71 | fMCEvent(NULL) | |
72395bd9 | 72 | { |
72395bd9 | 73 | |
74 | } | |
75 | ||
76 | ||
ca91a3e1 | 77 | //________________________________________________________________________ |
78 | AliAnalysisTaskMaterial::AliAnalysisTaskMaterial(const char *name) : AliAnalysisTaskSE(name), | |
344100c4 | 79 | fV0Reader(NULL), |
80 | fConversionGammas(NULL), | |
81 | fConversionCuts(NULL), | |
82 | fEventCuts(NULL), | |
83 | fOutputList(NULL), | |
84 | fEventList(NULL), | |
85 | fRecGammaList(NULL), | |
86 | fAllMCGammaList(NULL), | |
87 | fAllMCConvGammaList(NULL), | |
88 | fTreeEvent(NULL), | |
89 | fTreeMaterialRec(NULL), | |
90 | fTreeMaterialAllGamma(NULL), | |
91 | fTreeMaterialConvGamma(NULL), | |
92 | fPrimVtxZ(0.), | |
93 | fNContrVtx(0), | |
94 | fNESDtracksEta09(0), | |
95 | fNESDtracksEta0914(0), | |
96 | fNESDtracksEta14(0), | |
97 | fGammaMCPt(0.), | |
98 | fGammaMCTheta(0.), | |
99 | fGammaMCConvPt(0.), | |
100 | fGammaMCConvTheta(0.), | |
101 | fMCConvCords(5), | |
102 | fMCConvDaughterProp(4), | |
103 | fGammaPt(0.), | |
104 | fGammaTheta(0.), | |
105 | fGammaChi2NDF(0.), | |
106 | fRecCords(5), | |
107 | fDaughterProp(4), | |
108 | fKind(0), | |
109 | fIsHeavyIon(0), | |
110 | fIsMC(kFALSE), | |
111 | fESDEvent(NULL), | |
112 | fMCEvent(NULL) | |
ca91a3e1 | 113 | { |
63674d67 | 114 | // Default constructor |
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"); | |
63674d67 | 148 | fTreeEvent->Branch("nGoodTracksEta14",&fNESDtracksEta14,"fNESDtracksEta14/I"); |
149 | fEventList->Add(fTreeEvent); | |
150 | ||
151 | fRecGammaList= new TList(); | |
152 | fRecGammaList->SetName("RecGammaList"); | |
153 | fRecGammaList->SetOwner(kTRUE); | |
154 | fOutputList->Add(fRecGammaList); | |
155 | ||
156 | fTreeMaterialRec = new TTree("ConvPointRec","ConvPointRec"); | |
97146ba4 | 157 | fTreeMaterialRec->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I"); |
63674d67 | 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 | ||
97146ba4 | 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); | |
183 | // | |
184 | // // fMCConvCords = new Float_t[5]; | |
185 | // // fMCConvDaughterProp = new Float_t[4]; | |
186 | // | |
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 | // } | |
63674d67 | 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 | |
344100c4 | 205 | Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality(); |
51ead2dc | 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 | |
344100c4 | 217 | if(fEventCuts->GetSignalRejection() != 0){ |
51ead2dc | 218 | // if(fESDEvent->IsA()==AliESDEvent::Class()){ |
344100c4 | 219 | fEventCuts->GetNotRejectedParticles( fEventCuts->GetSignalRejection(), |
220 | fEventCuts->GetAcceptedHeader(), | |
221 | fMCEvent); | |
51ead2dc | 222 | // } |
223 | // else if(fInputEvent->IsA()==AliAODEvent::Class()){ | |
344100c4 | 224 | // fEventCuts->GetNotRejectedParticles( fEventCuts->GetSignalRejection(), |
225 | // fEventCuts->GetAcceptedHeader(), | |
226 | // fInputEvent); | |
51ead2dc | 227 | // } |
228 | } | |
229 | } | |
230 | ||
344100c4 | 231 | if(fIsHeavyIon > 0 && !fEventCuts->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 | |
97146ba4 | 251 | // if (fIsHeavyIon == 2){ |
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(); | |
97146ba4 | 262 | // if(MCEvent()){ |
263 | // ProcessMCPhotons(); | |
264 | // } | |
51ead2dc | 265 | PostData(1, fOutputList); |
ca91a3e1 | 266 | } |
267 | ||
97146ba4 | 268 | // ///________________________________________________________________________ |
269 | // void AliAnalysisTaskMaterial::FillMCTree(Int_t stackPos){ | |
270 | // AliStack *MCStack = fMCEvent->Stack(); | |
271 | // TParticle* candidate = (TParticle *)MCStack->Particle(stackPos); | |
272 | // | |
273 | // if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kFALSE)){ | |
274 | // fGammaMCPt = candidate->Pt(); | |
275 | // fGammaMCTheta = candidate->Theta(); | |
276 | // if (fTreeMaterialAllGamma){ | |
277 | // fTreeMaterialAllGamma->Fill(); | |
278 | // } | |
279 | // } | |
280 | // if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kTRUE)){ | |
281 | // fGammaMCConvPt = candidate->Pt(); | |
282 | // fGammaMCConvTheta = candidate->Theta(); | |
283 | // TParticle* daughter1 = (TParticle *)MCStack->Particle(candidate->GetFirstDaughter()); | |
284 | // TParticle* daughter2 = (TParticle *)MCStack->Particle(candidate->GetLastDaughter()); | |
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(); | |
290 | // | |
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 | // | |
296 | // if (fTreeMaterialConvGamma){ | |
297 | // fTreeMaterialConvGamma->Fill(); | |
298 | // } | |
299 | // } // Converted MC Gamma | |
300 | // } | |
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); | |
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 | // } | |
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)); | |
319 | // } | |
320 | // } else { | |
321 | // FillMCTree(i); | |
322 | // } | |
323 | // } | |
324 | // } | |
ca91a3e1 | 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 | |
97146ba4 | 335 | fNESDtracksEta09 = CountTracks09(); |
51ead2dc | 336 | fGammaPt = gamma->GetPhotonPt(); |
72395bd9 | 337 | fGammaTheta = gamma->GetPhotonTheta(); |
338 | fGammaChi2NDF = gamma->GetChi2perNDF(); | |
51ead2dc | 339 | fRecCords(0) = (Float_t)gamma->GetConversionX(); |
340 | fRecCords(1) = (Float_t)gamma->GetConversionY(); | |
341 | fRecCords(2) = (Float_t)gamma->GetConversionZ(); | |
342 | fRecCords(3) = (Float_t)gamma->GetConversionRadius(); | |
343 | fRecCords(4) = (Float_t)gamma->GetPhotonPhi(); | |
344 | ||
e5b6e8a6 | 345 | AliESDtrack * negTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelNegative()); |
51ead2dc | 346 | AliESDtrack * posTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelPositive()); |
347 | fDaughterProp(0) = (Float_t)posTrack->Pt(); | |
348 | fDaughterProp(1) = (Float_t)posTrack->Theta(); | |
349 | fDaughterProp(2) = (Float_t)negTrack->Pt(); | |
350 | fDaughterProp(3) = (Float_t)negTrack->Theta(); | |
72395bd9 | 351 | |
352 | fKind = 9; | |
353 | ||
ca91a3e1 | 354 | if(fMCEvent){ |
355 | // cout << "generating MC stack"<< endl; | |
356 | AliStack *fMCStack = fMCEvent->Stack(); | |
357 | if (!fMCStack) continue; | |
358 | TParticle *posDaughter = gamma->GetPositiveMCDaughter(fMCStack); | |
359 | TParticle *negDaughter = gamma->GetNegativeMCDaughter(fMCStack); | |
360 | // cout << "generate Daughters: "<<posDaughter << "\t" << negDaughter << endl; | |
51ead2dc | 361 | |
344100c4 | 362 | if(fMCStack && fEventCuts->GetSignalRejection() != 0){ |
51ead2dc | 363 | Int_t isPosFromMBHeader |
344100c4 | 364 | = fEventCuts->IsParticleFromBGEvent(gamma->GetMCLabelPositive(), fMCStack, fESDEvent); |
51ead2dc | 365 | Int_t isNegFromMBHeader |
344100c4 | 366 | = fEventCuts->IsParticleFromBGEvent(gamma->GetMCLabelNegative(), fMCStack, fESDEvent); |
51ead2dc | 367 | if( (isNegFromMBHeader < 1) || (isPosFromMBHeader < 1)) continue; |
368 | } | |
369 | ||
ca91a3e1 | 370 | if(posDaughter == NULL || negDaughter == NULL){ |
72395bd9 | 371 | fKind = 9; // garbage |
ca91a3e1 | 372 | // cout << "one of the daughters not available" << endl; |
373 | } else if(posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)){ | |
374 | // Not Same Mother == Combinatorial Bck | |
72395bd9 | 375 | fKind = 1; |
ca91a3e1 | 376 | // cout << "not the same mother" << endl; |
377 | Int_t pdgCodePos; | |
378 | if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue; | |
379 | Int_t pdgCodeNeg; | |
380 | if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue; | |
381 | // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl; | |
382 | if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11) | |
72395bd9 | 383 | fKind = 10; //Electron Combinatorial |
ca91a3e1 | 384 | if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11 && (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)) |
72395bd9 | 385 | fKind = 15; //direct Electron Combinatorial |
ca91a3e1 | 386 | |
387 | if(TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==211) | |
72395bd9 | 388 | fKind = 11; //Pion Combinatorial |
ca91a3e1 | 389 | if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==2212) || |
390 | (TMath::Abs(pdgCodePos)==2212 && TMath::Abs(pdgCodeNeg)==211)) | |
72395bd9 | 391 | fKind = 12; //Pion, Proton Combinatorics |
ca91a3e1 | 392 | if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==11) || |
393 | (TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==211)) | |
72395bd9 | 394 | fKind = 13; //Pion, Electron Combinatorics |
ca91a3e1 | 395 | if (TMath::Abs(pdgCodePos)==321 || TMath::Abs(pdgCodeNeg)==321) |
72395bd9 | 396 | fKind = 14; //Kaon combinatorics |
ca91a3e1 | 397 | |
398 | } else { | |
399 | // cout << "same mother" << endl; | |
400 | Int_t pdgCodePos; | |
401 | if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue; | |
402 | Int_t pdgCodeNeg; | |
403 | if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue; | |
404 | // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl; | |
405 | Int_t pdgCode; | |
406 | if (gamma->GetMCParticle(fMCStack)->GetPdgCode()) pdgCode = gamma->GetMCParticle(fMCStack)->GetPdgCode(); else continue; | |
407 | // cout << "PDG code: " << pdgCode << endl; | |
408 | if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11) | |
72395bd9 | 409 | fKind = 2; // combinatorics from hadronic decays |
ca91a3e1 | 410 | else if ( !(pdgCodeNeg==pdgCodePos)){ |
411 | TParticle *truePhotonCanditate = gamma->GetMCParticle(fMCStack); | |
e5b6e8a6 | 412 | Int_t motherLabelPhoton = truePhotonCanditate->GetMother(0); |
ca91a3e1 | 413 | if(pdgCode == 111) |
72395bd9 | 414 | fKind = 3; // pi0 Dalitz |
ca91a3e1 | 415 | else if (pdgCode == 221) |
72395bd9 | 416 | fKind = 4; // eta Dalitz |
ca91a3e1 | 417 | else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){ |
e5b6e8a6 | 418 | if(pdgCode == 22 && motherLabelPhoton < fMCStack->GetNprimary()){ |
72395bd9 | 419 | fKind = 0; // primary photons |
ca91a3e1 | 420 | } else if (pdgCode == 22){ |
72395bd9 | 421 | fKind = 5; //secondary photons |
422 | } | |
423 | } else fKind = 9; //garbage | |
424 | } else fKind = 9; //garbage | |
425 | } | |
ca91a3e1 | 426 | } |
97146ba4 | 427 | |
72395bd9 | 428 | if (fTreeMaterialRec){ |
51ead2dc | 429 | fTreeMaterialRec->Fill(); |
430 | } | |
ca91a3e1 | 431 | } |
432 | } | |
433 | ||
434 | //________________________________________________________________________ | |
ae947965 | 435 | Int_t AliAnalysisTaskMaterial::CountTracks09(){ |
51ead2dc | 436 | Int_t fNumberOfESDTracks = 0; |
437 | if(fInputEvent->IsA()==AliESDEvent::Class()){ | |
438 | // Using standard function for setting Cuts | |
439 | ||
440 | AliStack *fMCStack = NULL; | |
441 | if (fMCEvent){ | |
442 | fMCStack= fMCEvent->Stack(); | |
443 | if (!fMCStack) return 0; | |
444 | } | |
445 | ||
446 | Bool_t selectPrimaries=kTRUE; | |
447 | AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries); | |
448 | EsdTrackCuts->SetMaxDCAToVertexZ(2); | |
449 | EsdTrackCuts->SetEtaRange(-0.9, 0.9); | |
450 | EsdTrackCuts->SetPtRange(0.15); | |
451 | ||
452 | for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){ | |
453 | AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks); | |
454 | if(!curTrack) continue; | |
455 | if(EsdTrackCuts->AcceptTrack(curTrack) ){ | |
456 | if (fMCEvent){ | |
344100c4 | 457 | if(fMCStack && fEventCuts->GetSignalRejection() != 0){ |
458 | Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent); | |
51ead2dc | 459 | if( (isFromMBHeader < 1) ) continue; |
460 | } | |
461 | } | |
462 | fNumberOfESDTracks++; | |
463 | } | |
464 | } | |
465 | delete EsdTrackCuts; | |
466 | EsdTrackCuts=0x0; | |
97146ba4 | 467 | } |
51ead2dc | 468 | return fNumberOfESDTracks; |
e5b6e8a6 | 469 | } |
470 | ||
51ead2dc | 471 | //________________________________________________________________________ |
ae947965 | 472 | Int_t AliAnalysisTaskMaterial::CountTracks0914(){ |
51ead2dc | 473 | Int_t fNumberOfESDTracks = 0; |
474 | if(fInputEvent->IsA()==AliESDEvent::Class()){ | |
475 | // Using standard function for setting Cuts | |
476 | ||
477 | AliStack *fMCStack = NULL; | |
478 | if (fMCEvent){ | |
479 | fMCStack= fMCEvent->Stack(); | |
480 | if (!fMCStack) return 0; | |
481 | } | |
e5b6e8a6 | 482 | |
51ead2dc | 483 | AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); |
484 | EsdTrackCuts->SetMaxDCAToVertexZ(5); | |
485 | EsdTrackCuts->SetEtaRange(0.9, 1.4); | |
486 | EsdTrackCuts->SetPtRange(0.15); | |
487 | ||
488 | for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){ | |
489 | AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks); | |
490 | if(!curTrack) continue; | |
491 | if(EsdTrackCuts->AcceptTrack(curTrack) ){ | |
492 | if (fMCEvent){ | |
344100c4 | 493 | if(fMCStack && fEventCuts->GetSignalRejection() != 0){ |
494 | Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent); | |
51ead2dc | 495 | if( (isFromMBHeader < 1) ) continue; |
496 | } | |
497 | } | |
498 | fNumberOfESDTracks++; | |
499 | } | |
500 | } | |
501 | EsdTrackCuts->SetEtaRange(-1.4, -0.9); | |
502 | for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){ | |
503 | AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks); | |
504 | if(!curTrack) continue; | |
505 | if(EsdTrackCuts->AcceptTrack(curTrack) ){ | |
506 | if (fMCEvent){ | |
344100c4 | 507 | if(fMCStack && fEventCuts->GetSignalRejection() != 0){ |
508 | Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent); | |
51ead2dc | 509 | if( (isFromMBHeader < 1) ) continue; |
510 | } | |
511 | } | |
512 | fNumberOfESDTracks++; | |
513 | } | |
514 | } | |
515 | delete EsdTrackCuts; | |
516 | EsdTrackCuts=0x0; | |
97146ba4 | 517 | } |
51ead2dc | 518 | |
519 | return fNumberOfESDTracks; | |
ca91a3e1 | 520 | } |
521 | ||
ca91a3e1 | 522 | //________________________________________________________________________ |
523 | void AliAnalysisTaskMaterial::Terminate(Option_t *) | |
524 | { | |
0a2b2b4b | 525 | // if (fStreamMaterial){ |
526 | // fStreamMaterial->GetFile()->Write(); | |
527 | // } | |
ca91a3e1 | 528 | } |