25 #include "AliAnalysisManager.h" 26 #include "TParticle.h" 28 #include "AliPIDResponse.h" 30 #include "AliESDtrackCuts.h" 31 #include "AliAODMCParticle.h" 32 #include "AliAODMCHeader.h" 33 #include "AliAODEvent.h" 44 fV0ReaderName("V0ReaderV1"),
45 fConversionGammas(NULL),
46 fConversionCuts(NULL),
49 fNumberOfESDTracks(0),
54 ffillHistograms(kFALSE),
59 hNGoodESDTracks(NULL),
61 hNContributorsVertex(NULL),
68 hGammaChi2perNDF(NULL),
70 hGammaArmenteros(NULL),
71 hGammaCosinePointingAngle(NULL),
76 hElecNfindableClsTPC(NULL),
77 hPosiNfindableClsTPC(NULL),
81 hElectronITSdEdxP(NULL),
83 hElectronNSigmadEdxP(NULL),
84 hElectronNSigmadEdxEta(NULL),
85 hElectronNSigmaPiondEdxP(NULL),
86 hElectronNSigmaITSP(NULL),
87 hElectronNSigmaTOFP(NULL),
89 hPositronITSdEdxP(NULL),
91 hPositronNSigmadEdxP(NULL),
92 hPositronNSigmadEdxEta(NULL),
93 hPositronNSigmaPiondEdxP(NULL),
94 hPositronNSigmaITSP(NULL),
95 hPositronNSigmaTOFP(NULL),
126 fnGammaCandidates(1),
135 fV0ReaderName(
"V0ReaderV1"),
136 fConversionGammas(NULL),
137 fConversionCuts(NULL),
140 fNumberOfESDTracks(0),
145 ffillHistograms(kFALSE),
150 hNGoodESDTracks(NULL),
152 hNContributorsVertex(NULL),
153 hITSClusterPhi(NULL),
159 hGammaChi2perNDF(NULL),
161 hGammaArmenteros(NULL),
162 hGammaCosinePointingAngle(NULL),
167 hElecNfindableClsTPC(NULL),
168 hPosiNfindableClsTPC(NULL),
171 hElectrondEdxP(NULL),
172 hElectronITSdEdxP(NULL),
174 hElectronNSigmadEdxP(NULL),
175 hElectronNSigmadEdxEta(NULL),
176 hElectronNSigmaPiondEdxP(NULL),
177 hElectronNSigmaITSP(NULL),
178 hElectronNSigmaTOFP(NULL),
179 hPositrondEdxP(NULL),
180 hPositronITSdEdxP(NULL),
182 hPositronNSigmadEdxP(NULL),
183 hPositronNSigmadEdxEta(NULL),
184 hPositronNSigmaPiondEdxP(NULL),
185 hPositronNSigmaITSP(NULL),
186 hPositronNSigmaTOFP(NULL),
219 fnGammaCandidates(1),
225 DefineInput(0, TChain::Class());
226 DefineOutput(1, TList::Class());
255 hVertexZ =
new TH1F(
"Vertex_Z",
"Vertex_Z",300,-15,15);
263 else hNV0Tracks =
new TH1I(
"V0 Multiplicity",
"V0 Multiplicity",2000,0,2000);
268 hGammaPt =
new TH1F(
"Gamma_Pt",
"Gamma_Pt",250,0,25);
270 hGammaPhi =
new TH1F(
"Gamma_Phi",
"Gamma_Phi",360,0,2*TMath::Pi());
272 hGammaPhi_Pos =
new TH1F(
"GammaPhi_EtaPos",
"GammaPhi_EtaPos",360,0,2*TMath::Pi());
274 hGammaPhi_Neg =
new TH1F(
"GammaPhi_EtaNeg",
"GammaPhi_EtaNeg",360,0,2*TMath::Pi());
277 hGammaEta =
new TH1F(
"Gamma_Eta",
"Gamma_Eta",600,-1.5,1.5);
279 hGammaChi2perNDF =
new TH1F(
"Gamma_Chi2perNDF",
"Gamma_Chi2perNDF",500,0,100);
281 hGammaPsiPair =
new TH1F(
"Gamma_PsiPair",
"Gamma_PsiPair",500,0,2);
290 hElecPt =
new TH2F(
"Electron_Positron_Pt",
"Electron_Positron_Pt",250,0,25,250,0,25);
292 hElecEta =
new TH2F(
"Electron_Positron_Eta",
"Electron_Positron_Eta",600,-1.5,1.5,600,-1.5,1.5);
294 hElecPhi =
new TH2F(
"Electron_Positron_Phi",
"Electron_Positron_Phi",360,0,2*TMath::Pi(),360,0,2*TMath::Pi());
296 hElecClsTPC =
new TH1F(
"Electron_ClusterTPC",
"Electron_ClusterTPC",200,0,200);
298 hPosiClsTPC =
new TH1F(
"Positron_ClusterTPC",
"Positron_ClusterTPC",200,0,200);
301 hElecNfindableClsTPC =
new TH1F(
"Electron_findableClusterTPC",
"Electron_findableClusterTPC",100,0,1);
303 hPosiNfindableClsTPC =
new TH1F(
"Positron_findableClusterTPC",
"Positron_findableClusterTPC",100,0,1);
306 hElectrondEdxP =
new TH2F(
"Electron_dEdx_P",
"Electron_dEdx_P",100, 0.05, 20, 200, 0, 200);
309 hPositrondEdxP =
new TH2F(
"Positron_dEdx_P",
"Positron_dEdx_P",100, 0.05, 20, 200, 0, 200);
329 hElectronTOFP =
new TH2F(
"Electron_TOF_P",
"Electron_TOF_P",100, 0.05, 20, 600, -1000, 29000);
332 hPositronTOFP =
new TH2F(
"Positron_TOF_P",
"Positron_TOF_P",100, 0.05, 20, 600, -1000, 29000);
355 hInvMassPair =
new TH2F(
"Gamma_InvMassPair_Pt",
"Gamma invariant mass vs Pt",200,0,0.2,250,0,25);
469 printf(
" Gamma Conversion QA Task %s :: Eta Shift Manually Set to %f \n\n",
480 if(eventQuality != 0){
486 Int_t eventNotAccepted =
488 if(eventNotAccepted)
return;
521 Bool_t ffillTreeNew = kFALSE;
523 ffillTreeNew = kTRUE;
527 ffillTreeNew = kFALSE;
534 if (gamma==NULL)
continue;
562 AliVEvent*
event = (AliVEvent*) InputEvent();
587 if(!negTrack||!posTrack)
return;
603 fDaughterProp(3) = pidResonse->NumberOfSigmasTPC(posTrack,AliPID::kElectron);
604 fDaughterProp(22) = pidResonse->NumberOfSigmasTPC(posTrack,AliPID::kPion);
606 fDaughterProp(10) = pidResonse->NumberOfSigmasTPC(negTrack,AliPID::kElectron);
607 fDaughterProp(23) = pidResonse->NumberOfSigmasTPC(negTrack,AliPID::kPion);
608 Int_t nPosClusterITS = 0;
609 Int_t nNegClusterITS = 0;
610 for(
Int_t itsLayer = 0; itsLayer<6;itsLayer++){
611 if(TESTBIT(negTrack->GetITSClusterMap(),itsLayer)){
614 if(TESTBIT(posTrack->GetITSClusterMap(),itsLayer)){
622 if (nPosClusterITS > 0 ){
624 fDaughterProp(20) = pidResonse->NumberOfSigmasITS(posTrack,AliPID::kElectron);
629 if (nNegClusterITS > 0 ){
631 fDaughterProp(21) = pidResonse->NumberOfSigmasITS(negTrack,AliPID::kElectron);
638 if((posTrack->GetStatus() & AliESDtrack::kTOFpid) && !(posTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
639 Double_t t0pos = pidResonse->GetTOFResponse().GetStartTime(posTrack->P());
641 posTrack->GetIntegratedTimes(timesPos,9);
642 Double_t TOFsignalPos = posTrack->GetTOFsignal();
643 Double_t dTpos = TOFsignalPos - t0pos - timesPos[0];
645 fDaughterProp(5) = pidResonse->NumberOfSigmasTOF(posTrack, AliPID::kElectron);
650 if((negTrack->GetStatus() & AliESDtrack::kTOFpid) && !(negTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
651 Double_t t0neg = pidResonse->GetTOFResponse().GetStartTime(negTrack->P());
653 negTrack->GetIntegratedTimes(timesNeg,9);
654 Double_t TOFsignalNeg = negTrack->GetTOFsignal();
655 Double_t dTneg = TOFsignalNeg - t0neg - timesNeg[0];
657 fDaughterProp(12) = pidResonse->NumberOfSigmasTOF(negTrack, AliPID::kElectron);
696 if(!negTrack||!posTrack)
return;
699 hElecPt->Fill(negTrack->Pt(),posTrack->Pt());
700 hElecEta->Fill(negTrack->Eta(),posTrack->Eta());
701 hElecPhi->Fill(negTrack->Phi(),posTrack->Phi());
709 hElectronNSigmadEdxP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasTPC(negTrack, AliPID::kElectron));
710 hElectronNSigmadEdxEta->Fill(negTrack->Eta() ,pidResonse->NumberOfSigmasTPC(negTrack, AliPID::kElectron));
713 hPositronNSigmadEdxP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasTPC(posTrack, AliPID::kElectron));
714 hPositronNSigmadEdxEta->Fill(posTrack->Eta() ,pidResonse->NumberOfSigmasTPC(posTrack, AliPID::kElectron));
718 if((negTrack->GetStatus() & AliESDtrack::kTOFpid)==0 && !(negTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
719 Double_t t0neg = pidResonse->GetTOFResponse().GetStartTime(negTrack->P());
721 negTrack->GetIntegratedTimes(timesNeg,9);
722 Double_t TOFsignalNeg = negTrack->GetTOFsignal();
723 Double_t dTneg = TOFsignalNeg - t0neg - timesNeg[0];
725 hElectronNSigmaTOFP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasTOF(negTrack, AliPID::kElectron));
727 if((posTrack->GetStatus() & AliESDtrack::kTOFpid)==0 && !(posTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
728 Double_t t0pos = pidResonse->GetTOFResponse().GetStartTime(posTrack->P());
730 posTrack->GetIntegratedTimes(timesPos,9);
731 Double_t TOFsignalPos = posTrack->GetTOFsignal();
732 Double_t dTpos = TOFsignalPos - t0pos - timesPos[0];
734 hPositronNSigmaTOFP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasTOF(posTrack, AliPID::kElectron));
737 Int_t nPosClusterITS = 0;
738 Int_t nNegClusterITS = 0;
739 for(
Int_t itsLayer = 0; itsLayer<6;itsLayer++){
740 if(TESTBIT(negTrack->GetITSClusterMap(),itsLayer)){
743 if(TESTBIT(posTrack->GetITSClusterMap(),itsLayer)){
747 Double_t negtrackPhi = negTrack->Phi();
748 Double_t postrackPhi = posTrack->Phi();
753 if (nPosClusterITS > 0 ){
755 hPositronNSigmaITSP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasITS(posTrack,AliPID::kElectron));
757 if (nNegClusterITS > 0 ){
759 hElectronNSigmaITSP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasITS(negTrack,AliPID::kElectron));
771 Bool_t selectPrimaries=kTRUE;
772 AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
773 EsdTrackCuts->SetMaxDCAToVertexZ(2);
774 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
775 EsdTrackCuts->SetPtRange(0.15);
777 for(
Int_t iTracks = 0; iTracks <
fInputEvent->GetNumberOfTracks(); iTracks++){
778 AliESDtrack* curTrack = (AliESDtrack*)
fInputEvent->GetTrack(iTracks);
779 if(!curTrack)
continue;
787 for(
Int_t iTracks = 0; iTracks<
fInputEvent->GetNumberOfTracks(); iTracks++){
788 AliAODTrack* curTrack = (AliAODTrack*)
fInputEvent->GetTrack(iTracks);
789 if(curTrack->GetID()<0)
continue;
790 if(!curTrack->IsHybridGlobalConstrainedGlobal())
continue;
791 if(TMath::Abs(curTrack->Eta())>0.8)
continue;
792 if(curTrack->Pt()<0.15)
continue;
804 Int_t pdgCodePos = 0;
805 Int_t pdgCodeNeg = 0;
808 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
809 Double_t mcProdVtxX = primVtxMC->GetX();
810 Double_t mcProdVtxY = primVtxMC->GetY();
811 Double_t mcProdVtxZ = primVtxMC->GetZ();
814 if(posDaughter == NULL || negDaughter == NULL) {
818 }
else if( posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)) {
821 pdgCodePos=TMath::Abs(posDaughter->GetPdgCode());
822 pdgCodeNeg=TMath::Abs(negDaughter->GetPdgCode());
823 if(pdgCodePos==11 && pdgCodeNeg==11)
return 10;
824 if(pdgCodePos==11 && pdgCodeNeg==11 &&
825 (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1))
return 15;
827 if(pdgCodePos==211 && pdgCodeNeg==211) kind = 11;
828 if((pdgCodePos==211 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==211)) kind = 12;
829 if((pdgCodePos==11 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==11)) kind = 16;
830 if((pdgCodePos==11 && pdgCodeNeg==321) ||(pdgCodePos==321 && pdgCodeNeg==11)) kind = 17;
831 if((pdgCodePos==211 && pdgCodeNeg==321) ||(pdgCodePos==321 && pdgCodeNeg==211)) kind = 18;
832 if((pdgCodePos==211 && pdgCodeNeg==11) ||(pdgCodePos==11 && pdgCodeNeg==211)) kind = 13;
833 if(pdgCodePos==321 && pdgCodeNeg==321) kind = 14;
835 pdgCodePos=posDaughter->GetPdgCode();
836 pdgCodeNeg=negDaughter->GetPdgCode();
840 if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11)
return 2;
841 else if ( !(pdgCodeNeg==pdgCodePos)){
842 if(pdgCode == 111)
return 3;
843 else if (pdgCode == 221)
return 4;
844 else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
845 if(pdgCode == 22 && gammaIsPrimary){
847 }
else if (pdgCode == 22){
862 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
863 if (AODMCTrackArray!=NULL && TruePhotonCandidate!=NULL){
864 AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->
GetMCLabelPositive());
865 AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->
GetMCLabelNegative());
866 Int_t pdgCodePos = 0;
867 Int_t pdgCodeNeg = 0;
869 if(posDaughter == NULL || negDaughter == NULL) {
871 }
else if( posDaughter->GetMother() != negDaughter->GetMother() || (posDaughter->GetMother() == negDaughter->GetMother() && posDaughter->GetMother() ==-1)) {
873 pdgCodePos=TMath::Abs(posDaughter->GetPdgCode());
874 pdgCodeNeg=TMath::Abs(negDaughter->GetPdgCode());
875 if(pdgCodePos==11 && pdgCodeNeg==11) kind = 10;
876 if(pdgCodePos==11 && pdgCodeNeg==11 &&
877 (posDaughter->GetMother() == negDaughter->GetMother() && posDaughter->GetMother() ==-1))kind = 15;
879 if(pdgCodePos==211 && pdgCodeNeg==211) kind = 11;
880 if((pdgCodePos==211 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==211)) kind = 12;
881 if((pdgCodePos==11 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==11)) kind = 16;
882 if((pdgCodePos==11 && pdgCodeNeg==321) ||(pdgCodePos==321 && pdgCodeNeg==11)) kind = 17;
883 if((pdgCodePos==211 && pdgCodeNeg==321) ||(pdgCodePos==321 && pdgCodeNeg==211)) kind = 18;
884 if((pdgCodePos==211 && pdgCodeNeg==11) ||(pdgCodePos==11 && pdgCodeNeg==211)) kind = 13;
885 if(pdgCodePos==321 && pdgCodeNeg==321) kind = 14;
887 AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
888 pdgCodePos=posDaughter->GetPdgCode();
889 pdgCodeNeg=negDaughter->GetPdgCode();
891 if ( Photon->GetPdgCode())
892 pdgCode = Photon->GetPdgCode();
893 if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11) kind = 2;
894 else if ( !(pdgCodeNeg==pdgCodePos)){
895 if(pdgCode == 111) kind = 3;
896 else if (pdgCode == 221) kind = 4;
897 else if (!(negDaughter->GetMCProcessCode() != 5 || posDaughter->GetMCProcessCode() !=5)){
898 const AliVVertex* primVtxMC =
fMCEvent->GetPrimaryVertex();
899 Double_t mcProdVtxX = primVtxMC->GetX();
900 Double_t mcProdVtxY = primVtxMC->GetY();
901 Double_t mcProdVtxZ = primVtxMC->GetZ();
904 if(pdgCode == 22 && isPrimary){
906 }
else if (pdgCode == 22){
932 if(!PhotonCandidate)
continue;
942 Bool_t AODLabelPos = kFALSE;
943 Bool_t AODLabelNeg = kFALSE;
946 AliAODTrack *tempDaughter =
static_cast<AliAODTrack*
>(
fInputEvent->GetTrack(i));
959 if(AODLabelNeg && AODLabelPos){
963 if(!AODLabelPos || !AODLabelNeg){
965 AliAODTrack *tempDaughter =
static_cast<AliAODTrack*
>(
fInputEvent->GetTrack(i));
966 if(tempDaughter->GetID()<0){
980 if(AODLabelNeg && AODLabelPos){
984 if(!AODLabelPos || !AODLabelNeg){
985 cout<<
"WARNING!!! AOD TRACKS NOT FOUND FOR"<<endl;
1005 TAxis *axisafter = histoRebin->GetXaxis();
1006 Int_t bins = axisafter->GetNbins();
1007 Double_t from = axisafter->GetXmin();
1008 Double_t to = axisafter->GetXmax();
1011 Double_t factor = TMath::Power(to/from, 1./bins);
1012 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
1013 axisafter->Set(bins, newbins);
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.
Int_t GetMCLabelPositive() const
TH2F * hPositronNSigmadEdxEta
void SetLogBinningXTH2(TH2 *histoRebin)
TH2F * hPositronNSigmaTOFP
Double_t GetArmenterosAlpha() const
Int_t GetSignalRejection()
Int_t GetFirstTPCRow(Double_t radius)
TH2F * hPositronNSigmaITSP
void SetMCLabelNegative(Int_t label)
TH2F * hPositronNSigmadEdxP
Bool_t AreAODsRelabeled()
PeriodVar GetPeriodEnum()
void SetPeriodEnumExplicit(PeriodVar periodEnum)
void DoEtaShift(Bool_t doEtaShift)
Float_t GetPsiPair() const
Double_t GetConversionZ() const
TH2F * hElectronNSigmadEdxEta
TH2F * hElectronNSigmaITSP
TParticle * GetPositiveMCDaughter(AliMCEvent *mcEvent)
Int_t GetNumberOfContributorsVtx(AliVEvent *event)
TH2F * hElectronNSigmaTOFP
TH2F * hPositronNSigmaPiondEdxP
TH1F * hElecNfindableClsTPC
TH1F * hPosiNfindableClsTPC
Bool_t GetProduceV0FindingEfficiency()
TParticle * GetNegativeMCDaughter(AliMCEvent *mcEvent)
AliConversionPhotonCuts * fConversionCuts
Float_t GetChi2perNDF() const
void GetNotRejectedParticles(Int_t rejection, TList *HeaderList, AliVEvent *event)
Double_t GetArmenterosQt() const
TClonesArray * fConversionGammas
Int_t IsEventAcceptedByCut(AliConvEventCuts *ReaderCuts, AliVEvent *event, AliMCEvent *mcEvent, Int_t isHeavyIon, Bool_t isEMCALAnalysis)
virtual void UserExec(Option_t *option)
TVectorF fGammaPhotonProp
void SetMCLabelPositive(Int_t label)
Int_t GetTrackLabelNegative() const
AliV0ReaderV1 * fV0Reader
Bool_t IsConversionPrimaryESD(AliMCEvent *mcEvent, Long_t eventpos, Double_t prodVtxX, Double_t prodVtxY, Double_t prodVtxZ)
Int_t GetTrackLabelPositive() const
UInt_t IsTruePhotonESD(AliAODConversionPhoton *TruePhotonCandidate)
void RelabelAODPhotonCandidates(Bool_t mode)
AliConversionPhotonCuts * GetConversionCuts()
TH1I * hNContributorsVertex
Class handling all kinds of selection cuts for Gamma Conversion analysis.
virtual ~AliAnalysisTaskConversionQA()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH1F * hGammaCosinePointingAngle
void GetCorrectEtaShiftFromPeriod()
Int_t GetMCLabelNegative() const
Double_t GetConversionY() const
UInt_t IsTruePhotonAOD(AliAODConversionPhoton *TruePhotonCandidate)
AliAnalysisTaskConversionQA()
AliConvEventCuts * fEventCuts
void SetLabelPositive(Int_t label)
Track labels.
void SetLabelNegative(Int_t label)
TClonesArray * GetReconstructedGammas() const
AliVTrack * GetTrack(AliVEvent *event, Int_t label)
virtual Double_t GetPhotonPt() const
TList * GetAcceptedHeader()
Class handling all kinds of selection cuts for Gamma Conversion analysis.
virtual void Terminate(Option_t *)
AliConvEventCuts * GetEventCuts()
void ProcessQATree(AliAODConversionPhoton *gamma)
Bool_t IsConversionPrimaryAOD(AliVEvent *event, AliAODMCParticle *AODMCParticle, Double_t prodVtxX, Double_t prodVtxY, Double_t prodVtxZ)
void ProcessQA(AliAODConversionPhoton *gamma)
virtual void UserCreateOutputObjects()
TH2F * hElectronNSigmadEdxP
Double_t GetCosineOfPointingAngle(const AliConversionPhotonBase *photon, AliVEvent *event) const
Double_t GetConversionRadius() const
void RelabelAODs(Bool_t relabel=kTRUE)
Double_t GetConversionX() const
Bool_t PhotonIsSelected(AliConversionPhotonBase *photon, AliVEvent *event)
TList * GetV0FindingEfficiencyHistograms()
TList * GetCutHistograms()
TH2F * hElectronNSigmaPiondEdxP