AliPhysics  2aaea23 (2aaea23)
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 eventPos){
288 // TParticle* candidate = (TParticle *)fMCEvent->Particle(eventPos);
289 //
290 // if(fConversionCuts->PhotonIsSelectedMC(candidate,fMCEvent,kFALSE)){
291 // fGammaMCPt = candidate->Pt();
292 // fGammaMCTheta = candidate->Theta();
293 // if (fTreeMaterialAllGamma){
294 // fTreeMaterialAllGamma->Fill();
295 // }
296 // }
297 // if(fConversionCuts->PhotonIsSelectedMC(candidate,fMCEvent,kTRUE)){
298 // fGammaMCConvPt = candidate->Pt();
299 // fGammaMCConvTheta = candidate->Theta();
300 // TParticle* daughter1 = (TParticle *)fMCEvent->Particle(candidate->GetFirstDaughter());
301 // TParticle* daughter2 = (TParticle *)fMCEvent->Particle(candidate->GetLastDaughter());
302 // fMCConvCords(0) = (Float_t)daughter1->Vx();
303 // fMCConvCords(1) = (Float_t)daughter1->Vy();
304 // fMCConvCords(2) = (Float_t)daughter1->Vz();
305 // fMCConvCords(3) = (Float_t)daughter1->R();
306 // fMCConvCords(4) = (Float_t)daughter1->Phi();
307 //
308 // fMCConvDaughterProp(0) = (Float_t)daughter1->Pt();
309 // fMCConvDaughterProp(1) = (Float_t)daughter1->Theta();
310 // fMCConvDaughterProp(2) = (Float_t)daughter2->Pt();
311 // fMCConvDaughterProp(3) = (Float_t)daughter2->Theta();
312 //
313 // if (fTreeMaterialConvGamma){
314 // fTreeMaterialConvGamma->Fill();
315 // }
316 // } // Converted MC Gamma
317 // }
318 //
319 // ///________________________________________________________________________
320 // void AliAnalysisTaskMaterial::ProcessMCPhotons(){
321 // // Loop over all primary MC particle
322 // for(Int_t i = 0; i < fMCEvent->GetNumberOfPrimaries(); i++) {
323 // TParticle* particle = (TParticle *)fMCEvent->Particle(i);
324 // if (!particle) continue;
325 // Int_t isMCFromMBHeader = -1;
326 // if(fConversionCuts->GetSignalRejection() != 0){
327 // isMCFromMBHeader
328 // = fConversionCuts->IsParticleFromBGEvent(i, fMCEvent, fESDEvent);
329 // if(isMCFromMBHeader == 0) continue;
330 // }
331 // if (particle->GetPdgCode() == 111 && particle->GetFirstDaughter() >= fMCEvent->GetNumberOfPrimaries()){
332 // // cout << "Undecayed pi0 found with mother: " << particle->GetMother(0) << endl;
333 // for (Int_t j = 0; j < 2 ; j++){
334 // FillMCTree(particle->GetDaughter(j));
335 // }
336 // } else {
337 // FillMCTree(i);
338 // }
339 // }
340 // }
341 
344 
345  // Fill Histograms for QA and MC
346  for(Int_t firstGammaIndex=0;firstGammaIndex<fConversionGammas->GetEntriesFast();firstGammaIndex++){
347  AliAODConversionPhoton *gamma=dynamic_cast<AliAODConversionPhoton*>(fConversionGammas->At(firstGammaIndex));
348  if (gamma ==NULL) continue;
349  if(!fConversionCuts->PhotonIsSelected(gamma,fESDEvent)) continue;
350 
352  fGammaPt = gamma->GetPhotonPt();
353  fGammaTheta = gamma->GetPhotonTheta();
354  fGammaChi2NDF = gamma->GetChi2perNDF();
355  fRecCords(0) = (Float_t)gamma->GetConversionX();
356  fRecCords(1) = (Float_t)gamma->GetConversionY();
357  fRecCords(2) = (Float_t)gamma->GetConversionZ();
358  fRecCords(3) = (Float_t)gamma->GetConversionRadius();
359  fRecCords(4) = (Float_t)gamma->GetPhotonPhi();
360 
361  AliESDtrack * negTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelNegative());
362  AliESDtrack * posTrack = fConversionCuts->GetESDTrack(fESDEvent, gamma->GetTrackLabelPositive());
363  fDaughterProp(0) = (Float_t)posTrack->Pt();
364  fDaughterProp(1) = (Float_t)posTrack->Theta();
365  fDaughterProp(2) = (Float_t)negTrack->Pt();
366  fDaughterProp(3) = (Float_t)negTrack->Theta();
367 
368  fKind = 9;
369 
370  if(fMCEvent){
371 
372 // cout << "generating MC stack"<< endl;
373 
374  const AliVVertex* primVtxMC = fMCEvent->GetPrimaryVertex();
375  Double_t mcProdVtxX = primVtxMC->GetX();
376  Double_t mcProdVtxY = primVtxMC->GetY();
377  Double_t mcProdVtxZ = primVtxMC->GetZ();
378 
379  TParticle *posDaughter = gamma->GetPositiveMCDaughter(fMCEvent);
380  TParticle *negDaughter = gamma->GetNegativeMCDaughter(fMCEvent);
381 // cout << "generate Daughters: "<<posDaughter << "\t" << negDaughter << endl;
382 
383  if(fMCEvent && fEventCuts->GetSignalRejection() != 0){
384  Int_t isPosFromMBHeader
386  Int_t isNegFromMBHeader
388  if( (isNegFromMBHeader < 1) || (isPosFromMBHeader < 1)) continue;
389  }
390 
391  if(posDaughter == NULL || negDaughter == NULL){
392  fKind = 9; // garbage
393 // cout << "one of the daughters not available" << endl;
394  } else if(posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)){
395  // Not Same Mother == Combinatorial Bck
396  fKind = 1;
397 // cout << "not the same mother" << endl;
398  Int_t pdgCodePos;
399  if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
400  Int_t pdgCodeNeg;
401  if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
402 // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
403  if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11)
404  fKind = 10; //Electron Combinatorial
405  if(TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==11 && (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1))
406  fKind = 15; //direct Electron Combinatorial
407 
408  if(TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==211)
409  fKind = 11; //Pion Combinatorial
410  if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==2212) ||
411  (TMath::Abs(pdgCodePos)==2212 && TMath::Abs(pdgCodeNeg)==211))
412  fKind = 12; //Pion, Proton Combinatorics
413  if((TMath::Abs(pdgCodePos)==211 && TMath::Abs(pdgCodeNeg)==11) ||
414  (TMath::Abs(pdgCodePos)==11 && TMath::Abs(pdgCodeNeg)==211))
415  fKind = 13; //Pion, Electron Combinatorics
416  if (TMath::Abs(pdgCodePos)==321 || TMath::Abs(pdgCodeNeg)==321)
417  fKind = 14; //Kaon combinatorics
418 
419  } else {
420 // cout << "same mother" << endl;
421  Int_t pdgCodePos;
422  if (posDaughter->GetPdgCode()) pdgCodePos = posDaughter->GetPdgCode(); else continue;
423  Int_t pdgCodeNeg;
424  if (negDaughter->GetPdgCode()) pdgCodeNeg = negDaughter->GetPdgCode(); else continue;
425 // cout << "PDG codes daughters: " << pdgCodePos << "\t" << pdgCodeNeg << endl;
426  Int_t pdgCode;
427  if (gamma->GetMCParticle(fMCEvent)->GetPdgCode()) pdgCode = gamma->GetMCParticle(fMCEvent)->GetPdgCode(); else continue;
428 // cout << "PDG code: " << pdgCode << endl;
429  if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11)
430  fKind = 2; // combinatorics from hadronic decays
431  else if ( !(pdgCodeNeg==pdgCodePos)){
432  Bool_t gammaIsPrimary = fEventCuts->IsConversionPrimaryESD( fMCEvent, posDaughter->GetMother(0), mcProdVtxX, mcProdVtxY, mcProdVtxZ);
433  if(pdgCode == 111)
434  fKind = 3; // pi0 Dalitz
435  else if (pdgCode == 221)
436  fKind = 4; // eta Dalitz
437  else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
438  if(pdgCode == 22 && gammaIsPrimary){
439  fKind = 0; // primary photons
440  } else if (pdgCode == 22){
441  fKind = 5; //secondary photons
442  }
443  } else fKind = 9; //garbage
444  } else fKind = 9; //garbage
445  }
446  }
447 
448  if (fTreeMaterialRec){
449  fTreeMaterialRec->Fill();
450  }
451  }
452 }
453 
454 //________________________________________________________________________
456  Int_t fNumberOfESDTracks = 0;
457  if(fInputEvent->IsA()==AliESDEvent::Class()){
458  // Using standard function for setting Cuts
459 
460 
461  Bool_t selectPrimaries=kTRUE;
462  AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
463  EsdTrackCuts->SetMaxDCAToVertexZ(2);
464  EsdTrackCuts->SetEtaRange(-0.9, 0.9);
465  EsdTrackCuts->SetPtRange(0.15);
466 
467  for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
468  AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
469  if(!curTrack) continue;
470  if(EsdTrackCuts->AcceptTrack(curTrack) ){
471  if (fMCEvent){
472  if(fEventCuts->GetSignalRejection() != 0){
473  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCEvent, fESDEvent);
474  if( (isFromMBHeader < 1) ) continue;
475  }
476  }
477  fNumberOfESDTracks++;
478  }
479  }
480  delete EsdTrackCuts;
481  EsdTrackCuts=0x0;
482  }
483  return fNumberOfESDTracks;
484 }
485 
486 //________________________________________________________________________
488  Int_t fNumberOfESDTracks = 0;
489  if(fInputEvent->IsA()==AliESDEvent::Class()){
490  // Using standard function for setting Cuts
491 
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(fEventCuts->GetSignalRejection() != 0){
503  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCEvent, fESDEvent);
504  if( (isFromMBHeader < 1) ) continue;
505  }
506  }
507  fNumberOfESDTracks++;
508  }
509  }
510  EsdTrackCuts->SetEtaRange(-1.4, -0.9);
511  for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){
512  AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks);
513  if(!curTrack) continue;
514  if(EsdTrackCuts->AcceptTrack(curTrack) ){
515  if (fMCEvent){
516  if(fEventCuts->GetSignalRejection() != 0){
517  Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(TMath::Abs(curTrack->GetLabel()), fMCEvent, fESDEvent);
518  if( (isFromMBHeader < 1) ) continue;
519  }
520  }
521  fNumberOfESDTracks++;
522  }
523  }
524  delete EsdTrackCuts;
525  EsdTrackCuts=0x0;
526  }
527 
528  return fNumberOfESDTracks;
529 }
530 
531 //________________________________________________________________________
533 {
534 // if (fStreamMaterial){
535 // fStreamMaterial->GetFile()->Write();
536 // }
537 }
TParticle * GetMCParticle(AliMCEvent *mcEvent)
void SetPeriodEnum(TString periodName)
virtual Double_t GetPhotonPhi() const
Int_t IsParticleFromBGEvent(Int_t index, AliMCEvent *mcEvent, AliVEvent *event=0x0, Int_t debug=0)
Cut functions.
double Double_t
Definition: External.C:58
AliConversionPhotonCuts * fConversionCuts
virtual void Terminate(Option_t *)
PeriodVar GetPeriodEnum()
void SetPeriodEnumExplicit(PeriodVar periodEnum)
virtual Double_t GetPhotonTheta() const
TString GetPeriodName()
TParticle * GetPositiveMCDaughter(AliMCEvent *mcEvent)
AliESDtrack * GetESDTrack(AliESDEvent *event, Int_t label)
Bool_t GetProduceV0FindingEfficiency()
TParticle * GetNegativeMCDaughter(AliMCEvent *mcEvent)
void GetNotRejectedParticles(Int_t rejection, TList *HeaderList, AliVEvent *event)
int Int_t
Definition: External.C:63
float Float_t
Definition: External.C:68
Bool_t IsConversionPrimaryESD(AliMCEvent *mcEvent, Long_t eventpos, Double_t prodVtxX, Double_t prodVtxY, Double_t prodVtxZ)
Bool_t IsCentralitySelected(AliVEvent *event, AliMCEvent *mcEvent)
TClonesArray * GetReconstructedGammas() const
Definition: AliV0ReaderV1.h:85
virtual Double_t GetPhotonPt() const
TList * GetAcceptedHeader()
Class handling all kinds of selection cuts for Gamma Conversion analysis.
AliConvEventCuts * GetEventCuts()
Definition: AliV0ReaderV1.h:90
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)