]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/GammaConv/AliAnalysisTaskResolution.cxx
modified addtasks for calos
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAnalysisTaskResolution.cxx
index db08e287aaaa0c64f1b228ece75b89081eeb6834..70004d171c97b12275bb569917c8f52a6d817a0f 100644 (file)
@@ -36,146 +36,174 @@ ClassImp(AliAnalysisTaskResolution)
 
 //________________________________________________________________________
 AliAnalysisTaskResolution::AliAnalysisTaskResolution() : AliAnalysisTaskSE(),
-   fV0Reader(NULL),
-   fConversionGammas(NULL),
-   fConversionCuts(NULL),
-   fTreeEvent(NULL),
-   fTreeResolution(NULL),
-   fPrimVtxZ(0.),
-   fNContrVtx(0),
-   fNESDtracksEta09(0),
-   fNESDtracksEta0914(0),
-   fNESDtracksEta14(0),
-   fGammaRecCoords(5),
-   fGammaMCCoords(5),
-   fChi2ndf(0),
-   fIsHeavyIon(kFALSE),
-   fOutputList(NULL),
-   fEventList(NULL),
-   fResolutionList(NULL),
-   fESDEvent(NULL),
-   fMCEvent(NULL)
+       fV0Reader(NULL),
+       fConversionGammas(NULL),
+       fEventCuts(NULL),
+       fConversionCuts(NULL),
+       fTreeEvent(NULL),
+       fTreeResolution(NULL),
+       fPrimVtxZ(0.),
+       fNContrVtx(0),
+       fNESDtracksEta09(0),
+       fNESDtracksEta0914(0),
+       fNESDtracksEta14(0),
+       fGammaRecCoords(5),
+       fGammaMCCoords(5),
+       fChi2ndf(0),
+       fIsHeavyIon(0),
+       fIsMC(kFALSE),
+       fOutputList(NULL),
+       fEventList(NULL),
+       fResolutionList(NULL),
+       fESDEvent(NULL),
+       fMCEvent(NULL)
 {
 
    
 }
 
-
 //________________________________________________________________________
 AliAnalysisTaskResolution::AliAnalysisTaskResolution(const char *name) : AliAnalysisTaskSE(name),
-   fV0Reader(NULL),
-   fConversionGammas(NULL),
-   fConversionCuts(NULL),
-   fTreeEvent(NULL),
-   fTreeResolution(NULL),
-   fPrimVtxZ(0.),
-   fNContrVtx(0),
-   fNESDtracksEta09(0),
-   fNESDtracksEta0914(0),
-   fNESDtracksEta14(0),
-   fGammaRecCoords(5),
-   fGammaMCCoords(5),
-   fChi2ndf(0),
-   fIsHeavyIon(kFALSE),
-   fOutputList(NULL),
-   fEventList(NULL),
-   fResolutionList(NULL),
-   fESDEvent(NULL),
-   fMCEvent(NULL)
+       fV0Reader(NULL),
+       fConversionGammas(NULL),
+       fEventCuts(NULL),
+       fConversionCuts(NULL),
+       fTreeEvent(NULL),
+       fTreeResolution(NULL),
+       fPrimVtxZ(0.),
+       fNContrVtx(0),
+       fNESDtracksEta09(0),
+       fNESDtracksEta0914(0),
+       fNESDtracksEta14(0),
+       fGammaRecCoords(5),
+       fGammaMCCoords(5),
+       fChi2ndf(0),
+       fIsHeavyIon(0),
+       fIsMC(kFALSE),
+       fOutputList(NULL),
+       fEventList(NULL),
+       fResolutionList(NULL),
+       fESDEvent(NULL),
+       fMCEvent(NULL)
 {
-   // Default constructor
+       // Default constructor
 
-   DefineInput(0, TChain::Class());
-   DefineOutput(1, TList::Class());
+       DefineInput(0, TChain::Class());
+       DefineOutput(1, TList::Class());
 }
 
 //________________________________________________________________________
 AliAnalysisTaskResolution::~AliAnalysisTaskResolution()
 {
-   // default deconstructor
+       // default deconstructor
    
 }
 //________________________________________________________________________
 void AliAnalysisTaskResolution::UserCreateOutputObjects()
 {
-   // Create User Output Objects
+       // Create User Output Objects
 
-   if(fOutputList != NULL){
-      delete fOutputList;
-      fOutputList = NULL;
-   }
-   if(fOutputList == NULL){
-      fOutputList = new TList();
-      fOutputList->SetOwner(kTRUE);
-   }
-   
-   fEventList = new TList();
-   fEventList->SetName("EventList");
-   fEventList->SetOwner(kTRUE);
-   fOutputList->Add(fEventList);
-   
-   fTreeEvent = new TTree("Event","Event");   
-   fTreeEvent->Branch("primVtxZ",&fPrimVtxZ,"fPrimVtxZ/F");
-   fTreeEvent->Branch("nContrVtx",&fNContrVtx,"fNContrVtx/I");
-   fTreeEvent->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
-   fTreeEvent->Branch("nGoodTracksEta0914",&fNESDtracksEta0914,"fNESDtracksEta0914/I");
-   fTreeEvent->Branch("nGoodTracksEta14",&fNESDtracksEta14,"fNESDtracksEta14/I");
-   fEventList->Add(fTreeEvent);
-   
-   fResolutionList = new TList();
-   fResolutionList->SetName("ResolutionList");
-   fResolutionList->SetOwner(kTRUE);
-   fOutputList->Add(fResolutionList);
-                        
-   fTreeResolution = new TTree("Resolution","Resolution");   
-   fTreeResolution->Branch("RecCoords",&fGammaRecCoords);
-   fTreeResolution->Branch("MCCoords",&fGammaMCCoords);
-   fTreeResolution->Branch("chi2ndf",&fChi2ndf,"fChi2ndf/F");
-   fResolutionList->Add(fTreeResolution);
-   // V0 Reader Cuts
-   TString cutnumber = fConversionCuts->GetCutNumber();
-
-   PostData(1, fOutputList);
+       if(fOutputList != NULL){
+               delete fOutputList;
+               fOutputList = NULL;
+       }
+       if(fOutputList == NULL){
+               fOutputList = new TList();
+               fOutputList->SetOwner(kTRUE);
+       }
+       
+       fEventList = new TList();
+       fEventList->SetName("EventList");
+       fEventList->SetOwner(kTRUE);
+       fOutputList->Add(fEventList);
+       
+       fTreeEvent = new TTree("Event","Event");   
+       fTreeEvent->Branch("primVtxZ",&fPrimVtxZ,"fPrimVtxZ/F");
+       fTreeEvent->Branch("nContrVtx",&fNContrVtx,"fNContrVtx/I");
+       fTreeEvent->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
+       fTreeEvent->Branch("nGoodTracksEta14",&fNESDtracksEta14,"fNESDtracksEta14/I");
+       fEventList->Add(fTreeEvent);
+       
+       if (fIsMC){             
+               fResolutionList = new TList();
+               fResolutionList->SetName("ResolutionList");
+               fResolutionList->SetOwner(kTRUE);
+               fOutputList->Add(fResolutionList);
+                                                               
+               fTreeResolution = new TTree("Resolution","Resolution");
+               fTreeResolution->Branch("nGoodTracksEta09",&fNESDtracksEta09,"fNESDtracksEta09/I");
+               fTreeResolution->Branch("RecCoords",&fGammaRecCoords);
+               fTreeResolution->Branch("MCCoords",&fGammaMCCoords);
+               fTreeResolution->Branch("chi2ndf",&fChi2ndf,"fChi2ndf/F");
+               fResolutionList->Add(fTreeResolution);
+       }
+       PostData(1, fOutputList);
 }
 
 //________________________________________________________________________
 void AliAnalysisTaskResolution::UserExec(Option_t *){
 
-   fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
-
-      Int_t eventQuality = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetEventQuality();
-   if(eventQuality != 0){// Event Not Accepted
-      return;
-   }
-   fESDEvent = (AliESDEvent*) InputEvent();
-   if (fESDEvent==NULL) return;
-   if(fIsHeavyIon && !fConversionCuts->IsCentralitySelected(fESDEvent)) return;
-   fNESDtracksEta09 = CountTracks09(); // Estimate Event Multiplicity
-   fNESDtracksEta0914 = CountTracks0914(); // Estimate Event Multiplicity
-   fNESDtracksEta14 = fNESDtracksEta09 + fNESDtracksEta0914;
-   if(fESDEvent){
-      if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()>0) {
-         fNContrVtx = fESDEvent->GetPrimaryVertexTracks()->GetNContributors();
-      } else if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()<1) {
-         if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
-            fNContrVtx = fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
-         } else if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()<1) {
-            fNContrVtx = 0;
-         }
-      }
-   }
-   fPrimVtxZ = fESDEvent->GetPrimaryVertex()->GetZ();
-   
-   if (fTreeEvent){
-      fTreeEvent->Fill();
-   }
+       fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
 
-   fConversionGammas=fV0Reader->GetReconstructedGammas();
+       Int_t eventQuality = ((AliConvEventCuts*)fV0Reader->GetEventCuts())->GetEventQuality();
+       if(eventQuality != 0){// Event Not Accepted
+               return;
+       }
+       fESDEvent = (AliESDEvent*) InputEvent();
+       if (fESDEvent==NULL) return;
        if(MCEvent()){
                fMCEvent = MCEvent();
        }
-   ProcessPhotons();
-   PostData(1, fOutputList);
+       if(MCEvent()){
+               // Process MC Particle
+               if(fEventCuts->GetSignalRejection() != 0){
+//             if(fESDEvent->IsA()==AliESDEvent::Class()){
+                       fEventCuts->GetNotRejectedParticles(    fEventCuts->GetSignalRejection(),
+                                                                                                       fEventCuts->GetAcceptedHeader(),
+                                                                                                       fMCEvent);
+//             }
+//             else if(fInputEvent->IsA()==AliAODEvent::Class()){
+//                     fEventCuts->GetNotRejectedParticles(    fEventCuts->GetSignalRejection(),
+//                                                                                                     fEventCuts->GetAcceptedHeader(),
+//                                                                                                     fInputEvent);
+//             }
+               }
+       }
+
+   
+       if(fIsHeavyIon > 0 && !fEventCuts->IsCentralitySelected(fESDEvent)) return;
+       fNESDtracksEta09 = CountTracks09(); // Estimate Event Multiplicity
+       fNESDtracksEta0914 = CountTracks0914(); // Estimate Event Multiplicity
+       fNESDtracksEta14 = fNESDtracksEta09 + fNESDtracksEta0914;
+       if(fESDEvent){
+               if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()>0) {
+                       fNContrVtx = fESDEvent->GetPrimaryVertexTracks()->GetNContributors();
+               } else {
+                       fNContrVtx = 0;
+               }       
+//             else if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors()<1) {
+//                     if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
+//                             fNContrVtx = fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
+//                     } else if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()<1) {
+//                             fNContrVtx = 0;
+//                     }
+//             }
+       }
+       fPrimVtxZ = fESDEvent->GetPrimaryVertex()->GetZ();
+       
+//     if (fIsHeavyIon == 2){
+//             if (!(fNESDtracksEta09 > 20 && fNESDtracksEta09 < 80)) return;
+//     }       
+
+       
+       if (fTreeEvent){
+               fTreeEvent->Fill();
+       }
+
+       fConversionGammas=fV0Reader->GetReconstructedGammas();
+       ProcessPhotons();
+       PostData(1, fOutputList);
 }
 
 
@@ -183,23 +211,29 @@ void AliAnalysisTaskResolution::UserExec(Option_t *){
 void AliAnalysisTaskResolution::ProcessPhotons(){
 
        // Fill Histograms for QA and MC
-   for(Int_t firstGammaIndex=0;firstGammaIndex<fConversionGammas->GetEntriesFast();firstGammaIndex++){
-      AliAODConversionPhoton *gamma=dynamic_cast<AliAODConversionPhoton*>(fConversionGammas->At(firstGammaIndex));
-      if (gamma ==NULL) continue;
-      if(!fConversionCuts->PhotonIsSelected(gamma,fESDEvent)) continue;
-      fGammaRecCoords(0) = gamma->GetPhotonPt();
-      fGammaRecCoords(1) = gamma->GetPhotonPhi();
-      fGammaRecCoords(2) = gamma->GetPhotonEta();
-      fGammaRecCoords(3) = gamma->GetConversionRadius();
-      fGammaRecCoords(4) = gamma->GetConversionZ();
-      fChi2ndf = gamma->GetChi2perNDF();
-               if(fMCEvent){
+       for(Int_t firstGammaIndex=0;firstGammaIndex<fConversionGammas->GetEntriesFast();firstGammaIndex++){
+               AliAODConversionPhoton *gamma=dynamic_cast<AliAODConversionPhoton*>(fConversionGammas->At(firstGammaIndex));
+               if (gamma ==NULL) continue;
+               if(!fConversionCuts->PhotonIsSelected(gamma,fESDEvent)) continue;
+               fNESDtracksEta09 = CountTracks09(); // Estimate Event Multiplicity
+               fGammaRecCoords(0) = gamma->GetPhotonPt();
+               fGammaRecCoords(1) = gamma->GetPhotonPhi();
+               fGammaRecCoords(2) = gamma->GetPhotonEta();
+               fGammaRecCoords(3) = gamma->GetConversionRadius();
+               fGammaRecCoords(4) = gamma->GetConversionZ();
+               fChi2ndf = gamma->GetChi2perNDF();
+               if(MCEvent()){
 //                     cout << "generating MC stack"<< endl;
                        AliStack *fMCStack = fMCEvent->Stack();
                        if (!fMCStack) continue;
                        TParticle *posDaughter = gamma->GetPositiveMCDaughter(fMCStack);
                        TParticle *negDaughter = gamma->GetNegativeMCDaughter(fMCStack);
 //                     cout << "generate Daughters: "<<posDaughter << "\t" << negDaughter << endl;
+                       if(fMCStack && fEventCuts->GetSignalRejection() != 0){
+                               Int_t isPosFromMBHeader = fEventCuts->IsParticleFromBGEvent(gamma->GetMCLabelPositive(), fMCStack, fESDEvent);
+                               Int_t isNegFromMBHeader = fEventCuts->IsParticleFromBGEvent(gamma->GetMCLabelNegative(), fMCStack, fESDEvent);
+                               if( (isNegFromMBHeader < 1) || (isPosFromMBHeader < 1)) continue;
+                       }
                        
                        if(posDaughter == NULL || negDaughter == NULL){ 
                                continue;
@@ -225,110 +259,131 @@ void AliAnalysisTaskResolution::ProcessPhotons(){
                                                continue;
                                        else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
                                                if(pdgCode == 22){
-                     fGammaMCCoords(0) = truePhotonCanditate->Pt();
-                     fGammaMCCoords(1) = gamma->GetNegativeMCDaughter(fMCStack)->Phi();
-                     fGammaMCCoords(2) = gamma->GetNegativeMCDaughter(fMCStack)->Eta();
-                     fGammaMCCoords(3) = gamma->GetNegativeMCDaughter(fMCStack)->R();
-                     fGammaMCCoords(4) = gamma->GetNegativeMCDaughter(fMCStack)->Vz();
-                     
-                     if (fTreeResolution){
-                        fTreeResolution->Fill();
+                                                       fGammaMCCoords(0) = truePhotonCanditate->Pt();
+                                                       fGammaMCCoords(1) = gamma->GetNegativeMCDaughter(fMCStack)->Phi();
+                                                       fGammaMCCoords(2) = gamma->GetNegativeMCDaughter(fMCStack)->Eta();
+                                                       fGammaMCCoords(3) = gamma->GetNegativeMCDaughter(fMCStack)->R();
+                                                       fGammaMCCoords(4) = gamma->GetNegativeMCDaughter(fMCStack)->Vz();
+                                                       
+                                                       if (fTreeResolution){
+                                                               fTreeResolution->Fill();
                                                        }
                                                }               
                                        } else continue; //garbage
                                } else continue; //garbage
                        }
-      }
+               }
        }
 }
 
 //________________________________________________________________________
 Int_t AliAnalysisTaskResolution::CountTracks09(){
-   Int_t fNumberOfESDTracks = 0;
-   if(fInputEvent->IsA()==AliESDEvent::Class()){
-   // Using standard function for setting Cuts
-      Bool_t selectPrimaries=kTRUE;
-      AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
-      EsdTrackCuts->SetMaxDCAToVertexZ(2);
-      EsdTrackCuts->SetEtaRange(-0.9, 0.9);
-      EsdTrackCuts->SetPtRange(0.15);
-      
-      for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
-         AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
-         if(!curTrack) continue;
-         // if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
-         //    if(!((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack)) continue;
-         // }
-         if(EsdTrackCuts->AcceptTrack(curTrack) ) fNumberOfESDTracks++;
-      }
-      delete EsdTrackCuts;
-      EsdTrackCuts=0x0;
-   }
-   else if(fInputEvent->IsA()==AliAODEvent::Class()){
-      for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
-         AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
-         if(!curTrack->IsPrimaryCandidate()) continue;
-         if(abs(curTrack->Eta())>0.9) continue;
-         if(curTrack->Pt()<0.15) continue;
-         if(abs(curTrack->ZAtDCA())>2) continue;
-         fNumberOfESDTracks++;
-      }
-   }
+       Int_t fNumberOfESDTracks = 0;
+       if(fInputEvent->IsA()==AliESDEvent::Class()){
+       // Using standard function for setting Cuts
+               
+               AliStack *fMCStack = NULL;
+               if (MCEvent()){
+                       fMCStack= fMCEvent->Stack();
+                       if (!fMCStack) return 0;
+               }       
+                               
+               Bool_t selectPrimaries=kTRUE;
+               AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
+               EsdTrackCuts->SetMaxDCAToVertexZ(2);
+               EsdTrackCuts->SetEtaRange(-0.9, 0.9);
+               EsdTrackCuts->SetPtRange(0.15);
+               
+               for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
+                       AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
+                       if(!curTrack) continue;
+                       if(EsdTrackCuts->AcceptTrack(curTrack) ){
+                               if (fMCEvent){
+                                       if(fMCStack && fEventCuts->GetSignalRejection() != 0){
+                                               Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
+                                               if( (isFromMBHeader < 1) ) continue;
+                                       }                                       
+                               }       
+                               fNumberOfESDTracks++;
+                       }       
+               }
+               delete EsdTrackCuts;
+               EsdTrackCuts=0x0;
+       } else if(fInputEvent->IsA()==AliAODEvent::Class()){
+               for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
+                       AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
+                       if(!curTrack->IsPrimaryCandidate()) continue;
+                       if(abs(curTrack->Eta())>0.9) continue;
+                       if(curTrack->Pt()<0.15) continue;
+                       if(abs(curTrack->ZAtDCA())>2) continue;
+                       fNumberOfESDTracks++;
+               }
+       }
 
-   return fNumberOfESDTracks;
+       return fNumberOfESDTracks;
 }
 
+//________________________________________________________________________
 Int_t AliAnalysisTaskResolution::CountTracks0914(){
+       Int_t fNumberOfESDTracks = 0;
+       if(fInputEvent->IsA()==AliESDEvent::Class()){
+               // Using standard function for setting Cuts
+               
+               AliStack *fMCStack = NULL;
+               if (MCEvent()){
+                       fMCStack= fMCEvent->Stack();
+                       if (!fMCStack) return 0;
+               }       
 
-   // Using standard function for setting Cuts ; We use TPCOnlyTracks for outer eta region
-   //Bool_t selectPrimaries=kTRUE;
-        //   EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
-    Int_t fNumberOfESDTracks = 0;
-    if(fInputEvent->IsA()==AliESDEvent::Class()){
-      // Using standard function for setting Cuts
-      AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
-      EsdTrackCuts->SetMaxDCAToVertexZ(5);
-      EsdTrackCuts->SetEtaRange(0.9, 1.4);
-      EsdTrackCuts->SetPtRange(0.15);
-      
-      for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
-         AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
-         if(!curTrack) continue;
-         // if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){
-         //    if(!((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack)) continue;
-         // }
-         if(EsdTrackCuts->AcceptTrack(curTrack) ) fNumberOfESDTracks++;
-      }
-      EsdTrackCuts->SetEtaRange(-1.4, -0.9);
-      for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){
-         AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks);
-         if(!curTrack) continue;
-         if(EsdTrackCuts->AcceptTrack(curTrack) ) fNumberOfESDTracks++;
-      }
-      delete EsdTrackCuts;
-      EsdTrackCuts=0x0;
-   }
-   else if(fInputEvent->IsA()==AliAODEvent::Class()){
-      for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
-         AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
-//          if(!curTrack->IsPrimaryCandidate()) continue;
-         if(abs(curTrack->Eta())<0.9 || abs(curTrack->Eta())>1.4 ) continue;
-         if(curTrack->Pt()<0.15) continue;
-         if(abs(curTrack->ZAtDCA())>5) continue;
-         fNumberOfESDTracks++;
-      }
-   }
-   
-   return fNumberOfESDTracks;
+               AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+               EsdTrackCuts->SetMaxDCAToVertexZ(5);
+               EsdTrackCuts->SetEtaRange(0.9, 1.4);
+               EsdTrackCuts->SetPtRange(0.15);
+               
+               for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){
+                       AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks);
+                       if(!curTrack) continue;
+                       if(EsdTrackCuts->AcceptTrack(curTrack) ){
+                               if (fMCEvent){
+                                       if(fMCStack && fEventCuts->GetSignalRejection() != 0){
+                                               Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
+                                               if( (isFromMBHeader < 1) ) continue;
+                                       }                                       
+                               }       
+                               fNumberOfESDTracks++;
+                       }
+               }
+               EsdTrackCuts->SetEtaRange(-1.4, -0.9);
+               for(Int_t iTracks = 0; iTracks < fESDEvent->GetNumberOfTracks(); iTracks++){
+                       AliESDtrack* curTrack = fESDEvent->GetTrack(iTracks);
+                       if(!curTrack) continue;
+                       if(EsdTrackCuts->AcceptTrack(curTrack) ){
+                               if (fMCEvent){
+                                       if(fMCStack && fEventCuts->GetSignalRejection() != 0){
+                                               Int_t isFromMBHeader = fEventCuts->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack, fESDEvent);
+                                               if( (isFromMBHeader < 1) ) continue;
+                                       }                                       
+                               }       
+                               fNumberOfESDTracks++;
+                       }       
+               }
+               delete EsdTrackCuts;
+               EsdTrackCuts=0x0;
+       } else if(fInputEvent->IsA()==AliAODEvent::Class()){
+               for(Int_t iTracks = 0; iTracks<fInputEvent->GetNumberOfTracks(); iTracks++){
+                       AliAODTrack* curTrack = (AliAODTrack*) fInputEvent->GetTrack(iTracks);
+                       if(abs(curTrack->Eta())<0.9 || abs(curTrack->Eta())>1.4 ) continue;
+                       if(curTrack->Pt()<0.15) continue;
+                       if(abs(curTrack->ZAtDCA())>5) continue;
+                       fNumberOfESDTracks++;
+               }
+       }
+       
+       return fNumberOfESDTracks;
 }
 
 //________________________________________________________________________
 void AliAnalysisTaskResolution::Terminate(Option_t *)
 {
-//    if (fStreamMaterial){
-//       fStreamMaterial->GetFile()->Write();
-//    }
-//    if (fStreamResolution){
-//       fStreamResolution->GetFile()->Write();
-//    }
+       
 }