AliPhysics  b752f14 (b752f14)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskMaterial.cxx
Go to the documentation of this file.
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 
17 //---------------------------------------------
18 // QA Task for V0 Reader V1
19 //---------------------------------------------
21 
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 
36 
38  fV0Reader(NULL),
39  fV0ReaderName("V0ReaderV1"),
40  fConversionGammas(NULL),
41  fConversionCuts(NULL),
42  fEventCuts(NULL),
43  fOutputList(NULL),
44  fEventList(NULL),
45  fRecGammaList(NULL),
46  fAllMCGammaList(NULL),
47  fAllMCConvGammaList(NULL),
48  fTreeEvent(NULL),
49  fTreeMaterialRec(NULL),
50  fTreeMaterialAllGamma(NULL),
51  fTreeMaterialConvGamma(NULL),
52  fPrimVtxZ(0.),
53  fNContrVtx(0),
54  fNESDtracksEta09(0),
55  fNESDtracksEta0914(0),
56  fNESDtracksEta14(0),
57  fGammaMCPt(0.),
58  fGammaMCTheta(0.),
59  fGammaMCConvPt(0.),
60  fGammaMCConvTheta(0.),
61  fMCConvCords(5),
62  fMCConvDaughterProp(4),
63  fGammaPt(0.),
64  fGammaTheta(0.),
65  fGammaChi2NDF(0.),
66  fRecCords(5),
67  fDaughterProp(4),
68  fKind(0),
69  fIsHeavyIon(0),
70  fIsMC(kFALSE),
71  fESDEvent(NULL),
72  fMCEvent(NULL)
73 {
74 
75 }
76 
77 
78 //________________________________________________________________________
80  fV0Reader(NULL),
81  fV0ReaderName("V0ReaderV1"),
82  fConversionGammas(NULL),
83  fConversionCuts(NULL),
84  fEventCuts(NULL),
85  fOutputList(NULL),
86  fEventList(NULL),
87  fRecGammaList(NULL),
88  fAllMCGammaList(NULL),
89  fAllMCConvGammaList(NULL),
90  fTreeEvent(NULL),
91  fTreeMaterialRec(NULL),
92  fTreeMaterialAllGamma(NULL),
93  fTreeMaterialConvGamma(NULL),
94  fPrimVtxZ(0.),
95  fNContrVtx(0),
96  fNESDtracksEta09(0),
97  fNESDtracksEta0914(0),
98  fNESDtracksEta14(0),
99  fGammaMCPt(0.),
100  fGammaMCTheta(0.),
101  fGammaMCConvPt(0.),
102  fGammaMCConvTheta(0.),
103  fMCConvCords(5),
104  fMCConvDaughterProp(4),
105  fGammaPt(0.),
106  fGammaTheta(0.),
107  fGammaChi2NDF(0.),
108  fRecCords(5),
109  fDaughterProp(4),
110  fKind(0),
111  fIsHeavyIon(0),
112  fIsMC(kFALSE),
113  fESDEvent(NULL),
114  fMCEvent(NULL)
115 {
116  // Default constructor
117 
118  DefineInput(0, TChain::Class());
119  DefineOutput(1, TList::Class());
120 }
121 
122 //________________________________________________________________________
124 {
125  // default deconstructor
126 }
127 //_____________________________________________________________________________
129 {
134  }
135  return kTRUE;
136 }
137 
138 //________________________________________________________________________
140 {
141  // Create User Output Objects
142 
143  if(fOutputList != NULL){
144  delete fOutputList;
145  fOutputList = NULL;
146  }
147  if(fOutputList == NULL){
148  fOutputList = new TList();
149  fOutputList->SetOwner(kTRUE);
150  }
151 
152  fEventList = new TList();
153  fEventList->SetName("EventList");
154  fEventList->SetOwner(kTRUE);
155  fOutputList->Add(fEventList);
156 
157  fTreeEvent = new TTree("Event","Event");
158  fTreeEvent->Branch("primVtxZ",&fPrimVtxZ,"fPrimVtxZ/F");
159  fTreeEvent->Branch("nContrVtx",&fNContrVtx,"fNContrVtx/I");
160  fTreeEvent->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
161  fTreeEvent->Branch("nGoodTracksEta14",&fNESDtracksEta14,"fNESDtracksEta14/I");
162  fEventList->Add(fTreeEvent);
163 
164  fRecGammaList= new TList();
165  fRecGammaList->SetName("RecGammaList");
166  fRecGammaList->SetOwner(kTRUE);
168 
169  fTreeMaterialRec = new TTree("ConvPointRec","ConvPointRec");
170  fTreeMaterialRec->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
171  fTreeMaterialRec->Branch("recCords",&fRecCords);
172  fTreeMaterialRec->Branch("daughterProp",&fDaughterProp);
173  fTreeMaterialRec->Branch("pt",&fGammaPt,"fGammaPt/F");
174  fTreeMaterialRec->Branch("theta",&fGammaTheta,"fGammaTheta/F");
175  fTreeMaterialRec->Branch("chi2ndf",&fGammaChi2NDF,"fGammaChi2NDF/F");
176  if (fIsMC) {
177  fTreeMaterialRec->Branch("kind",&fKind,"fKind/b");
178  }
180 
181 // if (fIsMC) {
182 // fAllMCGammaList = new TList();
183 // fAllMCGammaList->SetName("AllMCGammaList");
184 // fAllMCGammaList->SetOwner(kTRUE);
185 // fOutputList->Add(fAllMCGammaList);
186 //
187 // fTreeMaterialAllGamma = new TTree("AllGamma","AllGamma");
188 // fTreeMaterialAllGamma->Branch("pt",&fGammaMCPt,"fGammaMCPt/F");
189 // fTreeMaterialAllGamma->Branch("theta",&fGammaMCTheta,"fGammaMCTheta/F");
190 // fAllMCGammaList->Add(fTreeMaterialAllGamma);
191 //
192 // fAllMCConvGammaList = new TList();
193 // fAllMCConvGammaList->SetName("AllMCGammaConvList");
194 // fAllMCConvGammaList->SetOwner(kTRUE);
195 // fOutputList->Add(fAllMCConvGammaList);
196 //
197 // // fMCConvCords = new Float_t[5];
198 // // fMCConvDaughterProp = new Float_t[4];
199 //
200 //
201 // fTreeMaterialConvGamma = new TTree("ConvGammaMC","ConvGammaMC");
202 // fTreeMaterialConvGamma->Branch("Cords",&fMCConvCords);
203 // fTreeMaterialConvGamma->Branch("daughterProp",&fMCConvDaughterProp);
204 // fTreeMaterialConvGamma->Branch("Pt",&fGammaMCConvPt,"fGammaMCConvPt/F");
205 // fTreeMaterialConvGamma->Branch("Theta",&fGammaMCConvTheta,"fGammaMCConvTheta/F");
206 // fAllMCConvGammaList->Add(fTreeMaterialConvGamma);
207 // }
208  fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask(fV0ReaderName.Data());
212 
213 
214 
215  PostData(1, fOutputList);
216 
217 }
218 
219 //________________________________________________________________________
221 
222 
223  Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality();
224  if(eventQuality != 0){// Event Not Accepted
225  return;
226  }
227  fESDEvent = (AliESDEvent*) InputEvent();
228  if (fESDEvent==NULL) return;
229  if(MCEvent()){
230  fMCEvent = MCEvent();
231  }
232 
233  if(MCEvent()){
234  // Process MC Particle
235  if(fEventCuts->GetSignalRejection() != 0){
236 // if(fESDEvent->IsA()==AliESDEvent::Class()){
239  fMCEvent);
240 // }
241 // else if(fInputEvent->IsA()==AliAODEvent::Class()){
242 // fEventCuts->GetNotRejectedParticles( fEventCuts->GetSignalRejection(),
243 // fEventCuts->GetAcceptedHeader(),
244 // fInputEvent);
245 // }
246  }
247  }
248 
250  fNESDtracksEta09 = CountTracks09(); // Estimate Event Multiplicity
251  fNESDtracksEta0914 = CountTracks0914(); // Estimate Event Multiplicity
253  if(fESDEvent){
254  if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()>0) {
255  fNContrVtx = fESDEvent->GetPrimaryVertexTracks()->GetNContributors();
256  } else {
257  fNContrVtx = 0;
258  }
259 // else if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()<1) {
260 // if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
261 // fNContrVtx = fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
262 // } else if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()<1) {
263 // fNContrVtx = 0;
264 // }
265 // }
266  }
267  fPrimVtxZ = fESDEvent->GetPrimaryVertex()->GetZ();
268 
269 // if (fIsHeavyIon == 2){
270 // if (!(fNESDtracksEta09 > 20 && fNESDtracksEta09 < 80)) return;
271 // }
272 
273 
274  if (fTreeEvent){
275  fTreeEvent->Fill();
276  }
277 
279  ProcessPhotons();
280 // if(MCEvent()){
281 // ProcessMCPhotons();
282 // }
283  PostData(1, fOutputList);
284 }
285 
286 // ///________________________________________________________________________
287 // void AliAnalysisTaskMaterial::FillMCTree(Int_t stackPos){
288 // AliStack *MCStack = fMCEvent->Stack();
289 // TParticle* candidate = (TParticle *)MCStack->Particle(stackPos);
290 //
291 // if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kFALSE)){
292 // fGammaMCPt = candidate->Pt();
293 // fGammaMCTheta = candidate->Theta();
294 // if (fTreeMaterialAllGamma){
295 // fTreeMaterialAllGamma->Fill();
296 // }
297 // }
298 // if(fConversionCuts->PhotonIsSelectedMC(candidate,MCStack,kTRUE)){
299 // fGammaMCConvPt = candidate->Pt();
300 // fGammaMCConvTheta = candidate->Theta();
301 // TParticle* daughter1 = (TParticle *)MCStack->Particle(candidate->GetFirstDaughter());
302 // TParticle* daughter2 = (TParticle *)MCStack->Particle(candidate->GetLastDaughter());
303 // fMCConvCords(0) = (Float_t)daughter1->Vx();
304 // fMCConvCords(1) = (Float_t)daughter1->Vy();
305 // fMCConvCords(2) = (Float_t)daughter1->Vz();
306 // fMCConvCords(3) = (Float_t)daughter1->R();
307 // fMCConvCords(4) = (Float_t)daughter1->Phi();
308 //
309 // fMCConvDaughterProp(0) = (Float_t)daughter1->Pt();
310 // fMCConvDaughterProp(1) = (Float_t)daughter1->Theta();
311 // fMCConvDaughterProp(2) = (Float_t)daughter2->Pt();
312 // fMCConvDaughterProp(3) = (Float_t)daughter2->Theta();
313 //
314 // if (fTreeMaterialConvGamma){
315 // fTreeMaterialConvGamma->Fill();
316 // }
317 // } // Converted MC Gamma
318 // }
319 //
320 // ///________________________________________________________________________
321 // void AliAnalysisTaskMaterial::ProcessMCPhotons(){
322 // // Loop over all primary MC particle
323 // AliStack *ffMCStack = fMCEvent->Stack();
324 // for(Int_t i = 0; i < ffMCStack->GetNprimary(); i++) {
325 // TParticle* particle = (TParticle *)ffMCStack->Particle(i);
326 // if (!particle) continue;
327 // Int_t isMCFromMBHeader = -1;
328 // if(fConversionCuts->GetSignalRejection() != 0){
329 // isMCFromMBHeader
330 // = fConversionCuts->IsParticleFromBGEvent(i, ffMCStack, fESDEvent);
331 // if(isMCFromMBHeader == 0) continue;
332 // }
333 // if (particle->GetPdgCode() == 111 && particle->GetFirstDaughter() >= ffMCStack->GetNprimary()){
334 // // cout << "Undecayed pi0 found with mother: " << particle->GetMother(0) << endl;
335 // for (Int_t j = 0; j < 2 ; j++){
336 // FillMCTree(particle->GetDaughter(j));
337 // }
338 // } else {
339 // FillMCTree(i);
340 // }
341 // }
342 // }
343 
346 
347  // Fill Histograms for QA and MC
348  for(Int_t firstGammaIndex=0;firstGammaIndex<fConversionGammas->GetEntriesFast();firstGammaIndex++){
349  AliAODConversionPhoton *gamma=dynamic_cast<AliAODConversionPhoton*>(fConversionGammas->At(firstGammaIndex));
350  if (gamma ==NULL) continue;
351  if(!fConversionCuts->PhotonIsSelected(gamma,fESDEvent)) continue;
352 
354  fGammaPt = gamma->GetPhotonPt();
355  fGammaTheta = gamma->GetPhotonTheta();
356  fGammaChi2NDF = gamma->GetChi2perNDF();
357  fRecCords(0) = (Float_t)gamma->GetConversionX();
358  fRecCords(1) = (Float_t)gamma->GetConversionY();
359  fRecCords(2) = (Float_t)gamma->GetConversionZ();
360  fRecCords(3) = (Float_t)gamma->GetConversionRadius();
361  fRecCords(4) = (Float_t)gamma->GetPhotonPhi();
362 
363  AliESDtrack * negTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelNegative());
364  AliESDtrack * posTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelPositive());
365  fDaughterProp(0) = (Float_t)posTrack->Pt();
366  fDaughterProp(1) = (Float_t)posTrack->Theta();
367  fDaughterProp(2) = (Float_t)negTrack->Pt();
368  fDaughterProp(3) = (Float_t)negTrack->Theta();
369 
370  fKind = 9;
371 
372  if(fMCEvent){
373 
374 // cout << "generating MC stack"<< endl;
375  AliStack *fMCStack = fMCEvent->Stack();
376  if (!fMCStack) continue;
377 
378  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
379  Double_t mcProdVtxX = primVtxMC->GetX();
380  Double_t mcProdVtxY = primVtxMC->GetY();
381  Double_t mcProdVtxZ = primVtxMC->GetZ();
382 
383  TParticle *posDaughter = gamma->GetPositiveMCDaughter(fMCStack);
384  TParticle *negDaughter = gamma->GetNegativeMCDaughter(fMCStack);
385 // cout << "generate Daughters: "<<posDaughter << "\t" << negDaughter << endl;
386 
387  if(fMCStack && fEventCuts->GetSignalRejection() != 0){
388  Int_t isPosFromMBHeader
390  Int_t isNegFromMBHeader
392  if( (isNegFromMBHeader < 1) || (isPosFromMBHeader < 1)) continue;
393  }
394 
395  if(posDaughter == NULL || negDaughter == NULL){
396  fKind = 9; // garbage
397 // cout << "one of the daughters not available" << endl;
398  } else if(posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)){
399  // Not Same Mother == Combinatorial Bck
400  fKind = 1;
401 // cout << "not the same mother" << endl;
402  Int_t pdgCodePos;
403  if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
404  Int_t pdgCodeNeg;
405  if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
406 // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
407  if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11)
408  fKind = 10; //Electron Combinatorial
409  if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11 && (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1))
410  fKind = 15; //direct Electron Combinatorial
411 
412  if(TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==211)
413  fKind = 11; //Pion Combinatorial
414  if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==2212) ||
415  (TMath::Abs(pdgCodePos)==2212 && TMath::Abs(pdgCodeNeg)==211))
416  fKind = 12; //Pion, Proton Combinatorics
417  if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==11) ||
418  (TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==211))
419  fKind = 13; //Pion, Electron Combinatorics
420  if (TMath::Abs(pdgCodePos)==321 || TMath::Abs(pdgCodeNeg)==321)
421  fKind = 14; //Kaon combinatorics
422 
423  } else {
424 // cout << "same mother" << endl;
425  Int_t pdgCodePos;
426  if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
427  Int_t pdgCodeNeg;
428  if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
429 // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
430  Int_t pdgCode;
431  if (gamma->GetMCParticle(fMCStack)->GetPdgCode()) pdgCode = gamma->GetMCParticle(fMCStack)->GetPdgCode(); else continue;
432 // cout << "PDG code: " << pdgCode << endl;
433  if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11)
434  fKind = 2; // combinatorics from hadronic decays
435  else if ( !(pdgCodeNeg==pdgCodePos)){
436  TParticle *truePhotonCanditate = gamma->GetMCParticle(fMCStack);
437  Int_t motherLabelPhoton = truePhotonCanditate->GetMother(0);
438  Bool_t gammaIsPrimary = fEventCuts->IsConversionPrimaryESD( fMCStack, posDaughter->GetMother(0), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
439  if(pdgCode == 111)
440  fKind = 3; // pi0 Dalitz
441  else if (pdgCode == 221)
442  fKind = 4; // eta Dalitz
443  else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
444  if(pdgCode == 22 && gammaIsPrimary){
445  fKind = 0; // primary photons
446  } else if (pdgCode == 22){
447  fKind = 5; //secondary photons
448  }
449  } else fKind = 9; //garbage
450  } else fKind = 9; //garbage
451  }
452  }
453 
454  if (fTreeMaterialRec){
455  fTreeMaterialRec->Fill();
456  }
457  }
458 }
459 
460 //________________________________________________________________________
462  Int_t fNumberOfESDTracks = 0;
463  if(fInputEvent->IsA()==AliESDEvent::Class()){
464  // Using standard function for setting Cuts
465 
466  AliStack *fMCStack = NULL;
467  if (fMCEvent){
468  fMCStack= fMCEvent->Stack();
469  if (!fMCStack) return 0;
470  }
471 
472  Bool_t selectPrimaries=kTRUE;
473  AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
474  EsdTrackCuts->SetMaxDCAToVertexZ(2);
475  EsdTrackCuts->SetEtaRange(-0.9, 0.9);
476  EsdTrackCuts->SetPtRange(0.15);
477 
478  for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
479  AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
480  if(!curTrack) continue;
481  if(EsdTrackCuts->AcceptTrack(curTrack) ){
482  if (fMCEvent){
483  if(fMCStack && fEventCuts->GetSignalRejection() != 0){
484  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCStack, fESDEvent);
485  if( (isFromMBHeader < 1) ) continue;
486  }
487  }
488  fNumberOfESDTracks++;
489  }
490  }
491  delete EsdTrackCuts;
492  EsdTrackCuts=0x0;
493  }
494  return fNumberOfESDTracks;
495 }
496 
497 //________________________________________________________________________
499  Int_t fNumberOfESDTracks = 0;
500  if(fInputEvent->IsA()==AliESDEvent::Class()){
501  // Using standard function for setting Cuts
502 
503  AliStack *fMCStack = NULL;
504  if (fMCEvent){
505  fMCStack= fMCEvent->Stack();
506  if (!fMCStack) return 0;
507  }
508 
509  AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
510  EsdTrackCuts->SetMaxDCAToVertexZ(5);
511  EsdTrackCuts->SetEtaRange(0.9, 1.4);
512  EsdTrackCuts->SetPtRange(0.15);
513 
514  for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
515  AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
516  if(!curTrack) continue;
517  if(EsdTrackCuts->AcceptTrack(curTrack) ){
518  if (fMCEvent){
519  if(fMCStack && fEventCuts->GetSignalRejection() != 0){
520  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCStack, fESDEvent);
521  if( (isFromMBHeader < 1) ) continue;
522  }
523  }
524  fNumberOfESDTracks++;
525  }
526  }
527  EsdTrackCuts->SetEtaRange(-1.4, -0.9);
528  for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){
529  AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks);
530  if(!curTrack) continue;
531  if(EsdTrackCuts->AcceptTrack(curTrack) ){
532  if (fMCEvent){
533  if(fMCStack && fEventCuts->GetSignalRejection() != 0){
534  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCStack, fESDEvent);
535  if( (isFromMBHeader < 1) ) continue;
536  }
537  }
538  fNumberOfESDTracks++;
539  }
540  }
541  delete EsdTrackCuts;
542  EsdTrackCuts=0x0;
543  }
544 
545  return fNumberOfESDTracks;
546 }
547 
548 //________________________________________________________________________
550 {
551 // if (fStreamMaterial){
552 // fStreamMaterial->GetFile()->Write();
553 // }
554 }
void SetPeriodEnum(TString periodName)
TParticle * GetMCParticle(AliStack *fMCStack)
virtual Double_t GetPhotonPhi() const
double Double_t
Definition: External.C:58
AliConversionPhotonCuts * fConversionCuts
virtual void Terminate(Option_t *)
PeriodVar GetPeriodEnum()
void SetPeriodEnumExplicit(PeriodVar periodEnum)
void GetNotRejectedParticles(Int_t rejection, TList *HeaderList, AliVEvent *MCEvent)
virtual Double_t GetPhotonTheta() const
TString GetPeriodName()
Bool_t IsConversionPrimaryESD(AliStack *MCStack, Long_t stackpos, Double_t prodVtxX, Double_t prodVtxY, Double_t prodVtxZ)
Bool_t IsCentralitySelected(AliVEvent *fInputEvent, AliVEvent *fMCEvent=NULL)
AliESDtrack * GetESDTrack(AliESDEvent *event, Int_t label)
Bool_t GetProduceV0FindingEfficiency()
int Int_t
Definition: External.C:63
float Float_t
Definition: External.C:68
TParticle * GetPositiveMCDaughter(AliStack *fMCStack)
Int_t IsParticleFromBGEvent(Int_t index, AliStack *MCStack, AliVEvent *InputEvent=0x0)
Cut functions.
ClassImp(AliAnalysisTaskMaterial) AliAnalysisTaskMaterial
TClonesArray * GetReconstructedGammas() const
Definition: AliV0ReaderV1.h:76
virtual Double_t GetPhotonPt() const
TList * GetAcceptedHeader()
Class handling all kinds of selection cuts for Gamma Conversion analysis.
AliConvEventCuts * GetEventCuts()
Definition: AliV0ReaderV1.h:81
TParticle * GetNegativeMCDaughter(AliStack *fMCStack)
const char Option_t
Definition: External.C:48
bool Bool_t
Definition: External.C:53
Double_t GetConversionRadius() const
Bool_t PhotonIsSelected(AliConversionPhotonBase *photon, AliVEvent *event)
TList * GetV0FindingEfficiencyHistograms()
virtual void UserExec(Option_t *option)