]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAnalysisTaskSEDvsMultiplicity.cxx
Fix for D0 filtering (A.Dainese)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEDvsMultiplicity.cxx
index e0c43bd8482bbbe1979738855bb5b49b15ca9646..521ed239633b8020cebc35ccaadef4a02d6bbc16 100644 (file)
@@ -30,7 +30,7 @@
 #include <TH2F.h>     
 #include <TH3F.h>
 #include <THnSparse.h>
-#include <TProfile.h>  
+#include <TProfile.h>
 #include "AliAnalysisManager.h"
 #include "AliRDHFCuts.h"
 #include "AliRDHFCutsDplustoKpipi.h"
@@ -56,7 +56,24 @@ AliAnalysisTaskSE(),
   fOutput(0),
   fListCuts(0),
   fOutputCounters(0),
+  fListProfiles(0),
   fHistNEvents(0),
+  fHistNtrEta16vsNtrEta1(0),
+  fHistNtrCorrEta1vsNtrRawEta1(0),
+  fHistNtrVsZvtx(0),
+  fHistNtrCorrVsZvtx(0),
+  fHistNtrVsNchMC(0),
+  fHistNtrCorrVsNchMC(0),
+  fHistNtrVsNchMCPrimary(0),
+  fHistNtrCorrVsNchMCPrimary(0),
+  fHistNtrVsNchMCPhysicalPrimary(0),
+  fHistNtrCorrVsNchMCPhysicalPrimary(0),
+  fHistGenPrimaryParticlesInelGt0(0),
+  fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
+  fHistNtrUnCorrEvSel(0),
+  fHistNtrCorrEvSel(0),
+  fHistNtrCorrEvWithCand(0),
+  fHistNtrCorrEvWithD(0),
   fPtVsMassVsMult(0),
   fPtVsMassVsMultNoPid(0),
   fPtVsMassVsMultUncorr(0),
@@ -75,7 +92,8 @@ AliAnalysisTaskSE(),
   fReadMC(kFALSE),
   fMCOption(0),
   fUseBit(kTRUE),
-  fRefMult(9.5),
+  fSubtractTrackletsFromDau(kFALSE),
+  fRefMult(9.26),
   fPdgMeson(411)
 {
    // Default constructor
@@ -89,7 +107,24 @@ AliAnalysisTaskSEDvsMultiplicity::AliAnalysisTaskSEDvsMultiplicity(const char *n
   fOutput(0),
   fListCuts(0),
   fOutputCounters(0),
+  fListProfiles(0),
   fHistNEvents(0),
+  fHistNtrEta16vsNtrEta1(0),
+  fHistNtrCorrEta1vsNtrRawEta1(0),
+  fHistNtrVsZvtx(0),
+  fHistNtrCorrVsZvtx(0),
+  fHistNtrVsNchMC(0),
+  fHistNtrCorrVsNchMC(0),
+  fHistNtrVsNchMCPrimary(0),
+  fHistNtrCorrVsNchMCPrimary(0),
+  fHistNtrVsNchMCPhysicalPrimary(0),
+  fHistNtrCorrVsNchMCPhysicalPrimary(0),
+  fHistGenPrimaryParticlesInelGt0(0),
+  fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary(0),
+  fHistNtrUnCorrEvSel(0),
+  fHistNtrCorrEvSel(0),
+  fHistNtrCorrEvWithCand(0),
+  fHistNtrCorrEvWithD(0),
   fPtVsMassVsMult(0),
   fPtVsMassVsMultNoPid(0),
   fPtVsMassVsMultUncorr(0),
@@ -108,7 +143,8 @@ AliAnalysisTaskSEDvsMultiplicity::AliAnalysisTaskSEDvsMultiplicity(const char *n
   fReadMC(kFALSE),
   fMCOption(0),
   fUseBit(kTRUE),
-  fRefMult(9.5),
+  fSubtractTrackletsFromDau(kFALSE),
+  fRefMult(9.26),
   fPdgMeson(pdgMeson)
 {
   // 
@@ -130,6 +166,8 @@ AliAnalysisTaskSEDvsMultiplicity::AliAnalysisTaskSEDvsMultiplicity(const char *n
   DefineOutput(2,TList::Class());
   // Output slot #3 writes cut to private output
   DefineOutput(3,TList::Class()); 
+  // Output slot #4 writes cut to private output
+  DefineOutput(4,TList::Class()); 
 }
 //________________________________________________________________________
 AliAnalysisTaskSEDvsMultiplicity::~AliAnalysisTaskSEDvsMultiplicity()
@@ -140,9 +178,11 @@ AliAnalysisTaskSEDvsMultiplicity::~AliAnalysisTaskSEDvsMultiplicity()
   delete fOutput;
   delete fHistNEvents;
   delete fListCuts;
+  delete fListProfiles;
   delete fRDCutsAnalysis;
   delete fCounter;
   delete fCounterU;
+  for(Int_t i=0; i<4; i++) delete fMultEstimatorAvg[i];
   for(Int_t i=0; i<5; i++){
     delete fHistMassPtImpPar[i];
   }
@@ -152,8 +192,8 @@ AliAnalysisTaskSEDvsMultiplicity::~AliAnalysisTaskSEDvsMultiplicity()
 void  AliAnalysisTaskSEDvsMultiplicity::SetMassLimits(Double_t lowlimit, Double_t uplimit){
   // set invariant mass limits
   if(uplimit>lowlimit){
-    fUpmasslimit = lowlimit;
-    fLowmasslimit = uplimit;
+    fLowmasslimit = lowlimit;
+    fUpmasslimit = uplimit;
   }else{
     AliError("Wrong mass limits: upper value should be larger than lower one");
   }
@@ -188,6 +228,18 @@ void AliAnalysisTaskSEDvsMultiplicity::Init(){
   }
   PostData(2,fListCuts);
   
+  fListProfiles = new TList();
+  fListProfiles->SetOwner();
+  TString period[4]={"LHC10b","LHC10c","LHC10d","LHC10e"};
+  for(Int_t i=0; i<4; i++){
+    if(fMultEstimatorAvg[i]){
+      TProfile* hprof=new TProfile(*fMultEstimatorAvg[i]);
+      hprof->SetName(Form("ProfileTrkVsZvtx%s\n",period[i].Data()));
+      fListProfiles->Add(hprof);
+    }
+  }
+  PostData(4,fListProfiles);
+
   return;
 }
 
@@ -203,22 +255,50 @@ void AliAnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects()
   fOutput->SetOwner();
   fOutput->SetName("OutputHistos");
 
-
-  TH1F *hspdmultCand = new TH1F("hspdmultCand", "Tracklets multiplicity for events with D candidates; Tracklets ; Entries",200,0.,200.);// Total multiplicity
-  TH1F *hspdmultD = new TH1F("hspdmultD", "Tracklets multiplicity for events with D in mass region ; Tracklets ; Entries",200,0.,200.); // 
-  TH2F *heta16vseta1 = new TH2F("heta16vseta1","Uncorrected Eta1.6 vs Eta1.0; Ntracklets #eta<1.0; Ntracklets #eta<1.6",200,-0.5,199.5,200,-0.5,199.5); //eta 1.6 vs eta 1.0 histogram 
-  TH2F *hNtrkvsVtxZ = new TH2F("hNtrkvsVtxZ","Ntracklet vs VtxZ; VtxZ;N_{tracklet};",300,-15,15,200,0,200.); // 
-  TH2F *hNtrkvsVtxZCorr = new TH2F("hNtrkvsVtxZCorr","Ntracklet vs VtxZ; VtxZ;N_{tracklet};",300,-15,15,200,0,200.); // 
+  fHistNtrUnCorrEvSel = new TH1F("hNtrUnCorrEvSel","Uncorrected tracklets multiplicity for selected events; Tracklets ; Entries",200,-0.5,199.5);
+  fHistNtrCorrEvSel = new TH1F("hNtrCorrEvSel","Corrected tracklets multiplicity for selected events; Tracklets ; Entries",200,-0.5,199.5);
+  fHistNtrCorrEvWithCand = new TH1F("hNtrCorrEvWithCand", "Tracklets multiplicity for events with D candidates; Tracklets ; Entries",200,-0.5,199.5);// Total multiplicity
+  fHistNtrCorrEvWithD = new TH1F("hNtrCorrEvWithD", "Tracklets multiplicity for events with D in mass region ; Tracklets ; Entries",200,-0.5,199.5); // 
+  fHistNtrEta16vsNtrEta1 = new TH2F("hNtrEta16vsNtrEta1","Uncorrected Eta1.6 vs Eta1.0; Ntracklets #eta<1.0; Ntracklets #eta<1.6",200,-0.5,199.5,200,-0.5,199.5); //eta 1.6 vs eta 1.0 histogram 
+  fHistNtrCorrEta1vsNtrRawEta1 = new TH2F("hNtrCorrEta1vsNtrRawEta1","Corrected Eta1 vs Eta1.0; Ntracklets #eta<1.0 corrected; Ntracklets #eta<1",200,-0.5,199.5,200,-0.5,199.5); //eta 1.6 vs eta 1.0 histogram 
+  fHistNtrVsZvtx = new TH2F("hNtrVsZvtx","Ntracklet vs VtxZ; VtxZ;N_{tracklet};",300,-15,15,200,-0.5,199.5); // 
+  fHistNtrCorrVsZvtx = new TH2F("hNtrCorrVsZvtx","Ntracklet vs VtxZ; VtxZ;N_{tracklet};",300,-15,15,200,-0.5,199.5); // 
+
+  fHistNtrVsNchMC = new TH2F("hNtrVsNchMC","Ntracklet vs NchMC; Nch;N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
+  fHistNtrCorrVsNchMC = new TH2F("hNtrCorrVsNchMC","Ntracklet vs Nch; Nch;N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
   
+  fHistNtrVsNchMCPrimary = new TH2F("hNtrVsNchMCPrimary","Ntracklet vs Nch (Primary); Nch (Primary);N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
+  fHistNtrCorrVsNchMCPrimary = new TH2F("hNtrCorrVsNchMCPrimary","Ntracklet vs Nch (Primary); Nch(Primary) ;N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
 
-  hspdmultCand->Sumw2();
-  hspdmultD->Sumw2();
-
-  fOutput->Add(hspdmultCand);
-  fOutput->Add(hspdmultD);
-  fOutput->Add(heta16vseta1);
-  fOutput->Add(hNtrkvsVtxZ); 
-  fOutput->Add(hNtrkvsVtxZCorr); 
+  fHistNtrVsNchMCPhysicalPrimary = new TH2F("hNtrVsNchMCPhysicalPrimary","Ntracklet vs Nch (Physical Primary); Nch (Physical Primary);N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
+  fHistNtrCorrVsNchMCPhysicalPrimary = new TH2F("hNtrCorrVsMCPhysicalPrimary","Ntracklet vs Nch (Physical Primary); Nch (Physical Primary);N_{tracklet};",200,-0.5,199.5,200,-0.5,199.5); // 
+  
+  fHistGenPrimaryParticlesInelGt0 = new TH1F("hGenPrimaryParticlesInelGt0","Multiplcity of generated charged particles ; Nparticles ; Entries",200,-0.5,199.5);
+
+  fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary = new TH3F("fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary", "MC: Nch (Physical Primary) vs Nch (Primary) vs Nch (Generated); Nch (Generated); Nch (Primary); Nch (Physical Primary)",200,-0.5,199.5,200,-0.5,199.5,200,-0.5,199.5);
+
+  fHistNtrUnCorrEvSel->Sumw2();
+  fHistNtrCorrEvSel->Sumw2();
+  fHistNtrCorrEvWithCand->Sumw2();
+  fHistNtrCorrEvWithD->Sumw2();
+  fHistGenPrimaryParticlesInelGt0->Sumw2();
+  fOutput->Add(fHistNtrUnCorrEvSel);
+  fOutput->Add(fHistNtrCorrEvSel);
+  fOutput->Add(fHistNtrCorrEvWithCand);
+  fOutput->Add(fHistNtrCorrEvWithD);
+  fOutput->Add(fHistNtrEta16vsNtrEta1);
+  fOutput->Add(fHistNtrCorrEta1vsNtrRawEta1);
+  fOutput->Add(fHistNtrVsZvtx);
+  fOutput->Add(fHistNtrCorrVsZvtx);
+
+  fOutput->Add(fHistNtrVsNchMC);
+  fOutput->Add(fHistNtrCorrVsNchMC);
+  fOutput->Add(fHistNtrVsNchMCPrimary);
+  fOutput->Add(fHistNtrCorrVsNchMCPrimary);
+  fOutput->Add(fHistNtrVsNchMCPhysicalPrimary);
+  fOutput->Add(fHistNtrCorrVsNchMCPhysicalPrimary);
+  fOutput->Add(fHistGenPrimaryParticlesInelGt0);
+  fOutput->Add(fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary);
 
   
   fHistNEvents = new TH1F("fHistNEvents", "number of events ",11,-0.5,10.5);
@@ -238,15 +318,15 @@ void AliAnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects()
   fHistNEvents->SetMinimum(0);
   fOutput->Add(fHistNEvents);
 
-  fPtVsMassVsMult=new TH3F("hPtVsMassvsMult", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,0.,200.,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
+  fPtVsMassVsMult=new TH3F("hPtVsMassvsMult", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,-0.5,199.5,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
  
-  fPtVsMassVsMultNoPid=new TH3F("hPtVsMassvsMultNoPid", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,0.,200.,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.); 
+  fPtVsMassVsMultNoPid=new TH3F("hPtVsMassvsMultNoPid", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,-0.5,199.5,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.); 
 
   fPtVsMassVsMultUncorr=new TH3F("hPtVsMassvsMultUncorr", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,-0.5,199.5,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
 
-  fPtVsMassVsMultPart=new TH3F("hPtVsMassvsMultPart", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,0.,200.,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
+  fPtVsMassVsMultPart=new TH3F("hPtVsMassvsMultPart", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,-0.5,199.5,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
 
-  fPtVsMassVsMultAntiPart=new TH3F("hPtVsMassvsMultAntiPart", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,0.,200.,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
+  fPtVsMassVsMultAntiPart=new TH3F("hPtVsMassvsMultAntiPart", "D candidates: p_{t} vs mass vs tracklets multiplicity; Tracklets; Mass M [GeV/c^{2}]; p_{t} [GeV/c]",200,-0.5,199.5,fNMassBins,fLowmasslimit,fUpmasslimit,48,0.,24.);
 
   fOutput->Add(fPtVsMassVsMult);
   fOutput->Add(fPtVsMassVsMultUncorr);
@@ -273,6 +353,9 @@ void AliAnalysisTaskSEDvsMultiplicity::UserCreateOutputObjects()
   PostData(1,fOutput); 
   PostData(2,fListCuts);
   PostData(3,fOutputCounters);
+  PostData(4,fListProfiles);
+
+  
 
   return;
 }
@@ -285,8 +368,6 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
   // Execute analysis for current event:
   // heavy flavor candidates association to MC truth
 
-  printf("UserExec\n");
-
   AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
   
   //  AliAODTracklets* tracklets = aod->GetTracklets();
@@ -361,25 +442,24 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
     }
   }
    
-  fCounter->StoreEvent(aod,fRDCutsAnalysis,fReadMC,countTreta1corr);
+  fCounter->StoreEvent(aod,fRDCutsAnalysis,fReadMC,(Int_t)countTreta1corr);
 
   Bool_t isEvSel=fRDCutsAnalysis->IsEventSelected(aod);
 
   if(fRDCutsAnalysis->GetWhyRejection()==5) fHistNEvents->Fill(3);
   if(fRDCutsAnalysis->GetWhyRejection()==7) fHistNEvents->Fill(4); 
-  if(fRDCutsAnalysis->GetWhyRejection()==6)fHistNEvents->Fill(5);
-  if(fRDCutsAnalysis->GetWhyRejection()==1)fHistNEvents->Fill(6);
-
+  if(fRDCutsAnalysis->GetWhyRejection()==6) fHistNEvents->Fill(5);
+  if(fRDCutsAnalysis->GetWhyRejection()==1) fHistNEvents->Fill(6);
   
-  if(!isEvSel)return;
-  fHistNEvents->Fill(2); // count events selected
-  ((TH2F*)(fOutput->FindObject("heta16vseta1")))->Fill(countTreta1,countTr);
-  ((TH2F*)(fOutput->FindObject("heta1corrvseta1")))->Fill(countTreta1,countTreta1corr);
-  ((TH2F*)(fOutput->FindObject("hNtrkvsVtxZ")))->Fill(vtx1->GetZ(),countTreta1);
-  ((TH2F*)(fOutput->FindObject("hNtrkvsVtxZCorr")))->Fill(vtx1->GetZ(),countTreta1corr);
   
+  if(!isEvSel)return;
+  fHistNtrEta16vsNtrEta1->Fill(countTreta1,countTr);
+  fHistNtrCorrEta1vsNtrRawEta1->Fill(countTreta1,countTreta1corr);
+  if(vtx1){
+    fHistNtrVsZvtx->Fill(vtx1->GetZ(),countTreta1);
+    fHistNtrCorrVsZvtx->Fill(vtx1->GetZ(),countTreta1corr);
+  }
+
   TClonesArray *arrayMC=0;
   AliAODMCHeader *mcHeader=0;
 
@@ -397,6 +477,24 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
       printf("AliAnalysisTaskSEDvsMultiplicity::UserExec: MC header branch not found!\n");
       return;
      }
+  
+
+    Int_t nChargedMC=AliVertexingHFUtils::GetGeneratedMultiplicityInEtaRange(arrayMC,-1.0,1.0);
+    Int_t nChargedMCPrimary=AliVertexingHFUtils::GetGeneratedPrimariesInEtaRange(arrayMC,-1.0,1.0);
+    Int_t nChargedMCPhysicalPrimary=AliVertexingHFUtils::GetGeneratedPhysicalPrimariesInEtaRange(arrayMC,-1.0,1.0);
+    if(nChargedMCPhysicalPrimary>0){ // INEL>0 for |eta|<1
+      fHistGenPrimaryParticlesInelGt0->Fill(nChargedMCPhysicalPrimary);
+    }
+    fHistNtrVsNchMC->Fill(nChargedMC,countTreta1);
+    fHistNtrCorrVsNchMC->Fill(nChargedMC,countTreta1corr);
+
+    fHistNtrVsNchMCPrimary->Fill(nChargedMCPrimary,countTreta1);
+    fHistNtrCorrVsNchMCPrimary->Fill(nChargedMCPrimary,countTreta1corr);
+
+    fHistNtrVsNchMCPhysicalPrimary->Fill(nChargedMCPhysicalPrimary,countTreta1);
+    fHistNtrCorrVsNchMCPhysicalPrimary->Fill(nChargedMCPhysicalPrimary,countTreta1corr);
+
+    fHistNchMCVsNchMCPrimaryVsNchMCPhysicalPrimary->Fill(nChargedMC,nChargedMCPrimary,nChargedMCPhysicalPrimary);
   }
   
   Int_t nCand = arrayCand->GetEntriesFast(); 
@@ -416,7 +514,8 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
     Double_t ptCand = d->Pt();
     Double_t rapid=d->Y(fPdgMeson);
     Bool_t isFidAcc=fRDCutsAnalysis->IsInFiducialAcceptance(ptCand,rapid);
-    Int_t passAllCuts=fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kCandidate,aod);
+    if(!isFidAcc) continue;
+    Int_t passAllCuts=fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kAll,aod);
     Int_t passTopolCuts=fRDCutsAnalysis->GetIsSelectedCuts();
     if(passTopolCuts==0) continue;
     nSelectedNoPID++;
@@ -425,6 +524,16 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
       nSelectedPID++;
       fHistNEvents->Fill(10);
     }
+    Double_t multForCand=countTreta1corr;
+    if(fSubtractTrackletsFromDau){
+      for(Int_t iDau=0; iDau<nDau; iDau++){
+       AliAODTrack *t = (AliAODTrack*)d->GetDaughter(iDau);
+       if(!t) continue;
+       if(t->HasPointOnITSLayer(0) && t->HasPointOnITSLayer(1)){
+         if(multForCand>0) multForCand-=1;
+       }
+      }
+    }
     Bool_t isPrimary=kTRUE;
     Int_t labD=-1;
     Double_t trueImpParXY=9999.;
@@ -451,7 +560,7 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
     for(Int_t iHyp=0; iHyp<2; iHyp++){
       if(mass[iHyp]<0.) continue; // for D+ and D* we have 1 mass hypothesis
       Double_t invMass=mass[iHyp];
-      Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,countTreta1corr};
+      Double_t arrayForSparse[5]={invMass,ptCand,impparXY,dlen,multForCand};
 
       if(fReadMC){
        
@@ -471,16 +580,16 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
            }else if(fPdgMeson==413){
              trueImpParXY=0.; /// FIXME
            }
-           Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,countTreta1corr};
-           if(fillHisto && isFidAcc && passAllCuts){
+           Double_t arrayForSparseTrue[5]={invMass,ptCand,trueImpParXY,dlen,multForCand};
+           if(fillHisto && passAllCuts){
              fHistMassPtImpPar[2]->Fill(arrayForSparse);
              fHistMassPtImpPar[3]->Fill(arrayForSparseTrue);
            }
          }else{
-           if(fillHisto && isFidAcc && passAllCuts) fHistMassPtImpPar[1]->Fill(arrayForSparse);
+           if(fillHisto && passAllCuts) fHistMassPtImpPar[1]->Fill(arrayForSparse);
          }
        }else{
-         if(fillHisto && isFidAcc && passAllCuts)fHistMassPtImpPar[4]->Fill(arrayForSparse);
+         if(fillHisto && passAllCuts)fHistMassPtImpPar[4]->Fill(arrayForSparse);
        }
        if(fPdgMeson==421){
          if(TMath::Abs(labD)==fPdgMeson && fMCOption==2) continue;
@@ -488,45 +597,50 @@ void AliAnalysisTaskSEDvsMultiplicity::UserExec(Option_t */*option*/)
        }
       }
       
-      if(iHyp==0 && !(passTopolCuts&1)) continue; // candidate not passing as D0
-      if(iHyp==1 && !(passTopolCuts&2)) continue; // candidate not passing as D0bar
-
-      if(isFidAcc){
-       fPtVsMassVsMultNoPid->Fill(countTreta1corr,invMass,ptCand);
-       if(passAllCuts){
-         fPtVsMassVsMult->Fill(countTreta1corr,invMass,ptCand);                      
-         fPtVsMassVsMultUncorr->Fill(countTreta1,invMass,ptCand);
-         // Add separation between part antipart
-         if(fPdgMeson==411){
-           if(d->GetCharge()>0) fPtVsMassVsMultPart->Fill(countTreta1corr,invMass,ptCand);
-           else fPtVsMassVsMultAntiPart->Fill(countTreta1corr,invMass,ptCand);
-         }else if(fPdgMeson==421){
-           if(passTopolCuts&1) fPtVsMassVsMultPart->Fill(countTreta1corr,invMass,ptCand);
-           if(passTopolCuts&2) fPtVsMassVsMultAntiPart->Fill(countTreta1corr,invMass,ptCand);
-         }else if(fPdgMeson==413){
-           // FIXME ADD Dstar!!!!!!!!
-         }
-      
-       
-         if(fDoImpPar){
-           fHistMassPtImpPar[0]->Fill(arrayForSparse);
-         }
-         
+      if(fPdgMeson==421){
+       if(iHyp==0 && !(passTopolCuts&1)) continue; // candidate not passing as D0
+       if(iHyp==1 && !(passTopolCuts&2)) continue; // candidate not passing as D0bar
+      }
+
+      fPtVsMassVsMultNoPid->Fill(multForCand,invMass,ptCand);
+
+      if(fPdgMeson==421){
+       if(iHyp==0 && !(passAllCuts&1)) continue; // candidate not passing as D0
+       if(iHyp==1 && !(passAllCuts&2)) continue; // candidate not passing as D0bar
+      }
+      if(passAllCuts){
+       fPtVsMassVsMult->Fill(multForCand,invMass,ptCand);                    
+       fPtVsMassVsMultUncorr->Fill(countTreta1,invMass,ptCand);
+       // Add separation between part antipart
+       if(fPdgMeson==411){
+         if(d->GetCharge()>0) fPtVsMassVsMultPart->Fill(multForCand,invMass,ptCand);
+         else fPtVsMassVsMultAntiPart->Fill(multForCand,invMass,ptCand);
+       }else if(fPdgMeson==421){
+         if(passAllCuts&1) fPtVsMassVsMultPart->Fill(multForCand,invMass,ptCand);
+         if(passAllCuts&2) fPtVsMassVsMultAntiPart->Fill(multForCand,invMass,ptCand);
+       }else if(fPdgMeson==413){
+         // FIXME ADD Dstar!!!!!!!!
        }
+       
+       if(fDoImpPar){
+         fHistMassPtImpPar[0]->Fill(arrayForSparse);
+       }
+       
       }
 
     }
   }
   fCounter->StoreCandidates(aod,nSelectedNoPID,kTRUE);
   fCounter->StoreCandidates(aod,nSelectedPID,kFALSE);
-  if(nSelectedPID>0)  ((TH2F*)(fOutput->FindObject("hspdmultCand")))->Fill(countTreta1corr);
-  if(nSelectedInMassPeak)  ((TH2F*)(fOutput->FindObject("hspdmultD")))->Fill(countTreta1corr);
+  fHistNtrUnCorrEvSel->Fill(countTreta1);
+  fHistNtrCorrEvSel->Fill(countTreta1corr);
+  if(nSelectedPID>0) fHistNtrCorrEvWithCand->Fill(countTreta1corr);
+  if(nSelectedInMassPeak>0) fHistNtrCorrEvWithD->Fill(countTreta1corr);
 
   PostData(1,fOutput); 
   PostData(2,fListCuts);
-  PostData(3,fOutput);
-  
-  
+  PostData(3,fOutputCounters);
+    
   return;
 }
 //________________________________________________________________________
@@ -570,9 +684,13 @@ void AliAnalysisTaskSEDvsMultiplicity::Terminate(Option_t */*option*/)
     printf("ERROR: fOutput not available\n");
     return;
   }
-  fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
-
 
+  fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
+  if(!fHistNEvents){
+    printf("ERROR: fHistNEvents not available\n");
+    return;    
+  }
+  printf("Number of Analyzed Events = %d\n",(Int_t)fHistNEvents->GetBinContent(3));
  
   return;
 }
@@ -629,4 +747,3 @@ TProfile* AliAnalysisTaskSEDvsMultiplicity::GetEstimatorHistogram(const AliVEven
 
   return fMultEstimatorAvg[period];
 }
-