]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAnalysisTaskSEDplus.cxx
merge from trunk (small, after 2 days period from last one)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEDplus.cxx
index d6dead6e646ee7c85a3d69dca234ca9b58173dc9..bcd01f0adbbb5af515f3aa6dcbb8223fd8194945 100644 (file)
@@ -46,7 +46,6 @@
 #include "AliVertexingHFUtils.h"
 ClassImp(AliAnalysisTaskSEDplus)
 
-
 //________________________________________________________________________
 AliAnalysisTaskSEDplus::AliAnalysisTaskSEDplus():
 AliAnalysisTaskSE(),
@@ -58,6 +57,8 @@ AliAnalysisTaskSE(),
   fYVsPtTC(0),
   fYVsPtSig(0),
   fYVsPtSigTC(0),
+  fPhiEtaCand(0),
+  fPhiEtaCandSigReg(0),
   fSPDMult(0),
   fNtupleDplus(0),
   fUpmasslimit(1.965),
@@ -74,9 +75,11 @@ AliAnalysisTaskSE(),
   fCutsDistr(kFALSE),
   fDoImpPar(kFALSE),
   fNImpParBins(400),
-  fLowerImpPar(-2000.),
-  fHigherImpPar(2000.),
-  fDoLS(0)
+  fLowerImpPar(-1000.),
+  fHigherImpPar(1000.),
+  fDoLS(0),
+  fEtaSelection(0),
+  fSystem(0)
 {
   // Default constructor
 
@@ -135,6 +138,8 @@ AliAnalysisTaskSEDplus::AliAnalysisTaskSEDplus(const char *name,AliRDHFCutsDplus
   fYVsPtTC(0),
   fYVsPtSig(0),
   fYVsPtSigTC(0),
+  fPhiEtaCand(0),
+  fPhiEtaCandSigReg(0),
   fSPDMult(0),
   fNtupleDplus(0),
   fUpmasslimit(1.965),
@@ -151,9 +156,11 @@ AliAnalysisTaskSEDplus::AliAnalysisTaskSEDplus(const char *name,AliRDHFCutsDplus
   fCutsDistr(kFALSE),
   fDoImpPar(kFALSE),
   fNImpParBins(400),
-  fLowerImpPar(-2000.),
-  fHigherImpPar(2000.),
-  fDoLS(0)
+  fLowerImpPar(-1000.),
+  fHigherImpPar(1000.),
+  fDoLS(0),
+  fEtaSelection(0),
+  fSystem(0)
 {
   // 
   // Standrd constructor
@@ -227,77 +234,7 @@ AliAnalysisTaskSEDplus::~AliAnalysisTaskSEDplus()
     delete fOutput;
     fOutput = 0;
   }
-  if(fHistNEvents){
-    delete fHistNEvents;
-    fHistNEvents=0;
-  }  
-  
-  for(Int_t i=0;i<3;i++){
-    if(fHistCentrality[i]){delete fHistCentrality[i]; fHistCentrality[i]=0;}
-  }
-  
-  for(Int_t i=0;i<3*fNPtBins;i++){
-    if(fMassHist[i]){ delete fMassHist[i]; fMassHist[i]=0;}
-    if(fCosPHist[i]){ delete fCosPHist[i]; fCosPHist[i]=0;}
-    if(fDLenHist[i]){ delete fDLenHist[i]; fDLenHist[i]=0;}
-    if(fSumd02Hist[i]){ delete fSumd02Hist[i]; fSumd02Hist[i]=0;}
-    if(fSigVertHist[i]){ delete fSigVertHist[i]; fSigVertHist[i]=0;}
-    if(fPtMaxHist[i]){ delete fPtMaxHist[i]; fPtMaxHist[i]=0;}
-    if(fPtKHist[i]){ delete fPtKHist[i]; fPtKHist[i]=0;}
-    if(fPtpi1Hist[i]){ delete fPtpi1Hist[i]; fPtpi1Hist[i]=0;}
-    if(fPtpi2Hist[i]){ delete fPtpi2Hist[i]; fPtpi2Hist[i]=0;}
-    if(fDCAHist[i]){ delete fDCAHist[i]; fDCAHist[i]=0;}
-    if(fMassHistTC[i]){ delete fMassHistTC[i]; fMassHistTC[i]=0;}
-    if(fMassHistTCPlus[i]){ delete fMassHistTCPlus[i]; fMassHistTCPlus[i]=0;}
-    if(fMassHistTCMinus[i]){ delete fMassHistTCMinus[i]; fMassHistTCMinus[i]=0;}
-
-    if(fDLxy[i]){delete fDLxy[i]; fDLxy[i]=0;}
-    if(fDLxyTC[i]){delete fDLxyTC[i]; fDLxyTC[i]=0;}
-    if(fCosxy[i]){delete fCosxy[i]; fCosxy[i]=0;}
-    if(fCosxyTC[i]){delete fCosxyTC[i]; fCosxyTC[i]=0;}
-    if(fMassHistLS[i]){ delete fMassHistLS[i]; fMassHistLS[i]=0;}
-    if(fCosPHistLS[i]){ delete fCosPHistLS[i]; fCosPHistLS[i]=0;}
-    if(fDLenHistLS[i]){ delete fDLenHistLS[i]; fDLenHistLS[i]=0;}
-    if(fSumd02HistLS[i]){ delete fSumd02HistLS[i]; fSumd02HistLS[i]=0;}
-    if(fSigVertHistLS[i]){ delete fSigVertHistLS[i]; fSigVertHistLS[i]=0;}
-    if(fPtMaxHistLS[i]){ delete fPtMaxHistLS[i]; fPtMaxHistLS[i]=0;}
-    if(fDCAHistLS[i]){ delete fDCAHistLS[i]; fDCAHistLS[i]=0;}
-    if(fMassHistLSTC[i]){ delete fMassHistLSTC[i]; fMassHistLSTC[i]=0;}
-  }
-
-  for(Int_t i=0;i<3;i++){
-    if(fCorreld0Kd0pi[i]){ delete fCorreld0Kd0pi[i]; fCorreld0Kd0pi[i]=0;}
-  }
 
-  if(fPtVsMass){
-    delete fPtVsMass;
-    fPtVsMass=0;
-  }
-  if(fPtVsMassTC){
-    delete fPtVsMassTC;
-    fPtVsMassTC=0;
-  }
-  if(fYVsPt){
-    delete fYVsPt;
-    fYVsPt=0;
-  }
-  if(fYVsPtTC){
-    delete fYVsPtTC;
-    fYVsPtTC=0;
-  }
-  if(fYVsPtSig){
-    delete fYVsPtSig;
-    fYVsPtSig=0;
-  }
-  if(fYVsPtSigTC){
-    delete fYVsPtSigTC;
-    fYVsPtSigTC=0;
-  }
-  if(fSPDMult){
-    delete fSPDMult;
-    fSPDMult=0;
-  }  
-  
   
   if(fNtupleDplus){
     delete fNtupleDplus;
@@ -311,9 +248,6 @@ AliAnalysisTaskSEDplus::~AliAnalysisTaskSEDplus()
     delete fRDCutsAnalysis;
     fRDCutsAnalysis = 0;
   }
-  for(Int_t i=0; i<5; i++){
-    delete fHistMassPtImpParTC[i];
-  }
   if(fCounter){
     delete fCounter;
     fCounter = 0;
@@ -397,7 +331,7 @@ void AliAnalysisTaskSEDplus::LSAnalysis(TClonesArray *arrayOppositeSign,TClonesA
     }else{
       nNegTrks++;
     }
-    fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kCandidate,aod);
+    fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kAll,aod);
     Int_t passTightCuts=fRDCutsAnalysis->GetIsSelectedCuts();
     if(passTightCuts>0){
       Float_t invMass = d->InvMassDplus();
@@ -470,6 +404,7 @@ void AliAnalysisTaskSEDplus::Init(){
   
   //PostData(2,fRDCutsloose);//we should then put those cuts in a tlist if we have more than 1
   fListCuts=new TList();
+  fListCuts->SetOwner();
   AliRDHFCutsDplustoKpipi *analysis = new AliRDHFCutsDplustoKpipi(*fRDCutsAnalysis);
   analysis->SetName("AnalysisCuts");
   
@@ -494,9 +429,9 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
   TString hisname;
   Int_t index=0;
   Int_t nbins=GetNBinsHistos();
-  fHistCentrality[0]=new TH1F("centrality","centrality",100,0.5,30000.5);
-  fHistCentrality[1]=new TH1F("centrality(selectedCent)","centrality(selectedCent)",100,0.5,30000.5);
-  fHistCentrality[2]=new TH1F("centrality(OutofCent)","centrality(OutofCent)",100,0.5,30000.5);
+  fHistCentrality[0]=new TH2F("hCentrMult","centrality",100,0.5,30000.5,40,0.,100.);
+  fHistCentrality[1]=new TH2F("hCentrMult(selectedCent)","centrality(selectedCent)",100,0.5,30000.5,40,0.,100.);
+  fHistCentrality[2]=new TH2F("hCentrMult(OutofCent)","centrality(OutofCent)",100,0.5,30000.5,40,0.,100.);
   for(Int_t i=0;i<3;i++){
     fHistCentrality[i]->Sumw2();
     fOutput->Add(fHistCentrality[i]);
@@ -509,44 +444,44 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
     fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,fLowmasslimit,fUpmasslimit);
     fMassHist[index]->Sumw2();
     hisname.Form("hCosPAllPt%d",i);
-    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,1.);
+    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,1.);
     fCosPHist[index]->Sumw2();
     hisname.Form("hDLenAllPt%d",i);
-    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.5);
+    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.5);
     fDLenHist[index]->Sumw2();
     hisname.Form("hSumd02AllPt%d",i);
-    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,1.);
+    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,1.);
     fSumd02Hist[index]->Sumw2();
     hisname.Form("hSigVertAllPt%d",i);
-    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fSigVertHist[index]->Sumw2();
     hisname.Form("hPtMaxAllPt%d",i);
-    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,5.);
     fPtMaxHist[index]->Sumw2();
     hisname.Form("hPtKPt%d",i);
-    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtKHist[index]->Sumw2();
     hisname.Form("hPtpi1Pt%d",i);
-    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi1Hist[index]->Sumw2();
     hisname.Form("hPtpi2Pt%d",i);
-    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi2Hist[index]->Sumw2();
     hisname.Form("hDCAAllPt%d",i);
-    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fDCAHist[index]->Sumw2();
 
     hisname.Form("hDLxyPt%d",i);
-    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxy[index]->Sumw2();
     hisname.Form("hCosxyPt%d",i);
-    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxy[index]->Sumw2();
     hisname.Form("hDLxyPt%dTC",i);
-    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxyTC[index]->Sumw2();
     hisname.Form("hCosxyPt%dTC",i);
-    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxyTC[index]->Sumw2();
    
     hisname.Form("hMassPt%dTC",i);
@@ -566,45 +501,45 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
     fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,fLowmasslimit,fUpmasslimit);
     fMassHist[index]->Sumw2();
     hisname.Form("hCosPSigPt%d",i);
-    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,1.);
+    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,1.);
     fCosPHist[index]->Sumw2();
     hisname.Form("hDLenSigPt%d",i);
-    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.5);
+    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.5);
     fDLenHist[index]->Sumw2();
     hisname.Form("hSumd02SigPt%d",i);
-    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,1.);
+    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,1.);
     fSumd02Hist[index]->Sumw2();
     hisname.Form("hSigVertSigPt%d",i);
-    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fSigVertHist[index]->Sumw2();
     hisname.Form("hPtMaxSigPt%d",i);
-    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,5.);
     fPtMaxHist[index]->Sumw2();  
     hisname.Form("hPtKSigPt%d",i);  
-    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtKHist[index]->Sumw2();
     hisname.Form("hPtpi1SigPt%d",i);
-    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi1Hist[index]->Sumw2();
     hisname.Form("hPtpi2SigPt%d",i);
-    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi2Hist[index]->Sumw2();
 
     hisname.Form("hDCASigPt%d",i);
-    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fDCAHist[index]->Sumw2();    
 
     hisname.Form("hDLxySigPt%d",i);
-    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxy[index]->Sumw2();
     hisname.Form("hCosxySigPt%d",i);
-    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxy[index]->Sumw2();
     hisname.Form("hDLxySigPt%dTC",i);
-    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxyTC[index]->Sumw2();
     hisname.Form("hCosxySigPt%dTC",i);
-    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxyTC[index]->Sumw2();
     hisname.Form("hSigPt%dTC",i);
     fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,fLowmasslimit,fUpmasslimit);
@@ -622,44 +557,44 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
     fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,fLowmasslimit,fUpmasslimit);
     fMassHist[index]->Sumw2();
     hisname.Form("hCosPBkgPt%d",i);
-    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,1.);
+    fCosPHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,1.);
     fCosPHist[index]->Sumw2();
     hisname.Form("hDLenBkgPt%d",i);
-    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.5);
+    fDLenHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.5);
     fDLenHist[index]->Sumw2();
     hisname.Form("hSumd02BkgPt%d",i);
-    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,1.);
+    fSumd02Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,1.);
     fSumd02Hist[index]->Sumw2();
     hisname.Form("hSigVertBkgPt%d",i);
-    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fSigVertHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fSigVertHist[index]->Sumw2();
     hisname.Form("hPtMaxBkgPt%d",i);
-    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtMaxHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.5,5.);
     fPtMaxHist[index]->Sumw2();
     hisname.Form("hPtKBkgPt%d",i);  
-    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtKHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtKHist[index]->Sumw2();
     hisname.Form("hPtpi1BkgPt%d",i);
-    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi1Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi1Hist[index]->Sumw2();
     hisname.Form("hPtpi2BkgPt%d",i);
-    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.5,5.);
+    fPtpi2Hist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
     fPtpi2Hist[index]->Sumw2();
     hisname.Form("hDCABkgPt%d",i);
-    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,0.1);
+    fDCAHist[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
     fDCAHist[index]->Sumw2();
 
     hisname.Form("hDLxyBkgPt%d",i);
-    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxy[index]->Sumw2();
     hisname.Form("hCosxyBkgPt%d",i);
-    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxy[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxy[index]->Sumw2();
     hisname.Form("hDLxyBkgPt%dTC",i);
-    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.,10.);
+    fDLxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.);
     fDLxyTC[index]->Sumw2();
     hisname.Form("hCosxyBkgPt%dTC",i);
-    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),nbins,0.85,1.);
+    fCosxyTC[index]=new TH1F(hisname.Data(),hisname.Data(),100,-1,1.);
     fCosxyTC[index]->Sumw2();
   
 
@@ -728,10 +663,12 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
 
   fPtVsMass=new TH2F("hPtVsMass","PtVsMass (prod. cuts)",nbins,fLowmasslimit,fUpmasslimit,200,0.,20.);
   fPtVsMassTC=new TH2F("hPtVsMassTC","PtVsMass (analysis cuts)",nbins,fLowmasslimit,fUpmasslimit,200,0.,20.);  
-  fYVsPt=new TH2F("hYVsPt","YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.);
-  fYVsPtTC=new TH2F("hYVsPtTC","YvsPt (analysis cuts)",40,0.,20.,80,-2.,2.);
+  fYVsPt=new TH3F("hYVsPt","YvsPt (prod. cuts)",40,0.,20.,80,-2.,2.,nbins,fLowmasslimit,fUpmasslimit);
+  fYVsPtTC=new TH3F("hYVsPtTC","YvsPt (analysis cuts)",40,0.,20.,80,-2.,2.,nbins,fLowmasslimit,fUpmasslimit);
   fYVsPtSig=new TH2F("hYVsPtSig","YvsPt (MC, only sig., prod. cuts)",40,0.,20.,80,-2.,2.);
   fYVsPtSigTC=new TH2F("hYVsPtSigTC","YvsPt (MC, only Sig, analysis cuts)",40,0.,20.,80,-2.,2.);
+  fPhiEtaCand=new TH2F("hPhiEtaCand","phi vs. eta candidates",20,-1.,1.,50,0.,2*TMath::Pi());
+  fPhiEtaCandSigReg=new TH2F("hPhiEtaCandSigReg","phi vs. eta candidates",20,-1.,1.,50,0.,2*TMath::Pi());
   fSPDMult = new TH1F("hSPDMult", "Tracklets multiplicity; Tracklets ; Entries",200,0.,200.); 
   fOutput->Add(fPtVsMass);
   fOutput->Add(fPtVsMassTC);
@@ -739,6 +676,8 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
   fOutput->Add(fYVsPtTC);
   fOutput->Add(fYVsPtSig);
   fOutput->Add(fYVsPtSigTC);
+  fOutput->Add(fPhiEtaCand);
+  fOutput->Add(fPhiEtaCandSigReg);
   fOutput->Add(fSPDMult);
 
 
@@ -756,7 +695,7 @@ void AliAnalysisTaskSEDplus::UserCreateOutputObjects()
     OpenFile(4); // 4 is the slot number of the ntuple
    
     
-    fNtupleDplus = new TNtuple("fNtupleDplus","D +","pdg:Px:Py:Pz:Pt:pid:Ptpi:PtK:Ptpi2:cosp:cospxy:DecLen:NormDecLen:DecLenXY:NormDecLenXY:InvMass:sigvert:d0Pi:d0K:d0Pi2:maxdca:ntracks:centr:RunNumber");
+    fNtupleDplus = new TNtuple("fNtupleDplus","D +","pdg:Px:Py:Pz:Pt:charge:piddau0:piddau1:piddau2:Ptpi:PtK:Ptpi2:mompi:momK:mompi2:cosp:cospxy:DecLen:NormDecLen:DecLenXY:NormDecLenXY:InvMass:sigvert:d0Pi:d0K:d0Pi2:maxdca:ntracks:centr:RunNumber:BadDau");
 
   }
   
@@ -813,11 +752,13 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
 
   //Event selection
   Bool_t isEvSel=fRDCutsAnalysis->IsEventSelected(aod);
-  Float_t ntracks=aod->GetNTracks();//fRDCutsAnalysis->GetCentrality(aod);
-  fHistCentrality[0]->Fill(ntracks);
+  Float_t ntracks=aod->GetNTracks();
+  Float_t evCentr=0;
+  if(fRDCutsAnalysis->GetUseCentrality()>0) evCentr=fRDCutsAnalysis->GetCentrality(aod);
+  fHistCentrality[0]->Fill(ntracks,evCentr);
   if(fRDCutsAnalysis->GetWhyRejection()==5) fHistNEvents->Fill(2);
   if(fRDCutsAnalysis->GetWhyRejection()==1) fHistNEvents->Fill(3); 
-  if(fRDCutsAnalysis->GetWhyRejection()==2){fHistNEvents->Fill(4);fHistCentrality[2]->Fill(ntracks);}
+  if(fRDCutsAnalysis->GetWhyRejection()==2){fHistNEvents->Fill(4);fHistCentrality[2]->Fill(ntracks,evCentr);}
   if(fRDCutsAnalysis->GetWhyRejection()==6)fHistNEvents->Fill(5);
   if(fRDCutsAnalysis->GetWhyRejection()==7)fHistNEvents->Fill(6);
 
@@ -830,7 +771,7 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
   // printf("ntracklet===%d\n",tracklets);
   fSPDMult->Fill(tracklets);
 
-  fHistCentrality[1]->Fill(ntracks);
+  fHistCentrality[1]->Fill(ntracks,evCentr);
   fHistNEvents->Fill(1);
 
   TClonesArray *arrayMC=0;
@@ -869,7 +810,7 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
     for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
       AliAODRecoDecayHF3Prong *d = (AliAODRecoDecayHF3Prong*)array3Prong->UncheckedAt(i3Prong);
       if(fUseBit && !d->HasSelectionBit(AliRDHFCuts::kDplusCuts)){
-       if(fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kCandidate,aod))nOS++;
+       if(fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kAll,aod))nOS++;
       }
     }
   }else{//Standard analysis
@@ -883,14 +824,23 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
        fHistNEvents->Fill(8);
        continue;
       }
+    
+      Int_t passTightCuts=fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kAll,aod);
+
+      if(!fRDCutsAnalysis->GetIsSelectedCuts()) continue;
+
+      Double_t etaD=d->Eta();
+      Double_t phiD=d->Phi();
+      if(fEtaSelection!=0){
+       if(fEtaSelection==1 && etaD<0) continue;
+       if(fEtaSelection==-1 && etaD>0) continue;
+      }
+
       Bool_t unsetvtx=kFALSE;
       if(!d->GetOwnPrimaryVtx()){
        d->SetOwnPrimaryVtx(vtx1);
        unsetvtx=kTRUE;
       }
-    
-      Int_t passTightCuts=fRDCutsAnalysis->IsSelected(d,AliRDHFCuts::kCandidate,aod);
-      if(!fRDCutsAnalysis->GetIsSelectedCuts())continue;//filling loose cuts histos with no-pid informations
 
       Double_t ptCand = d->Pt();
       Int_t iPtBin = fRDCutsAnalysis->PtBin(ptCand);     
@@ -923,17 +873,21 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
 
       Double_t invMass=d->InvMassDplus();
       Double_t rapid=d->YDplus();
-      fYVsPt->Fill(ptCand,rapid);
-      if(passTightCuts) {fYVsPtTC->Fill(ptCand,rapid);nOS++;}
+      fYVsPt->Fill(ptCand,rapid,invMass);
+      if(passTightCuts) {fYVsPtTC->Fill(ptCand,rapid,invMass);nOS++;}
       Bool_t isFidAcc=fRDCutsAnalysis->IsInFiducialAcceptance(ptCand,rapid);
       if(isFidAcc){
        fPtVsMass->Fill(invMass,ptCand);
-       if(passTightCuts) fPtVsMassTC->Fill(invMass,ptCand);
+       if(passTightCuts){
+         fPtVsMassTC->Fill(invMass,ptCand);
+         fPhiEtaCand->Fill(etaD,phiD);
+         if(TMath::Abs(invMass-1.8696)<0.05) fPhiEtaCandSigReg->Fill(etaD,phiD);
+       }
       }
 
 
       Double_t  dlen=0,cosp=0,maxdca=0,sigvert=0,sumD02=0,ptmax=0,dlxy=0,cxy=0;
-      if(fCutsDistr||fFillNtuple){
+      if(fCutsDistr||fFillNtuple||fDoImpPar){
        dlen=d->DecayLength();
        cosp=d->CosPointingAngle();
        sumD02=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
@@ -952,32 +906,41 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
       Double_t arrayForSparseTrue[6]={invMass,ptCand,trueImpParXY,cosp,dlen,tracklets};
 
       //Ntuple
-      Float_t tmp[24];    
+      Float_t tmp[31];
       if(fFillNtuple){
        tmp[0]=pdgCode;
+       if(!isPrimary) tmp[0]+=5000.;
        tmp[1]=d->Px();
        tmp[2]=d->Py();
        tmp[3]=d->Pz();
        tmp[4]=d->Pt();
-       tmp[5]=fRDCutsAnalysis->GetIsSelectedPID();       
-       tmp[6]=d->PtProng(0);     
-       tmp[7]=d->PtProng(1);     
-       tmp[8]=d->PtProng(2);
-       tmp[9]=cosp;
-       tmp[10]=cxy;
-       tmp[11]=dlen;
-       tmp[12]=d->NormalizedDecayLength();
-       tmp[13]=d->DecayLengthXY();
-       tmp[14]=dlxy;
-       tmp[15]=d->InvMassDplus();
-       tmp[16]=sigvert;
-       tmp[17]=d->Getd0Prong(0);
-       tmp[18]=d->Getd0Prong(1);
-       tmp[19]=d->Getd0Prong(2);
-       tmp[20]=maxdca;
-       tmp[21]=ntracks;
-       tmp[22]=fRDCutsAnalysis->GetCentrality(aod);
-       tmp[23]=runNumber;
+       tmp[5]=d->GetCharge();
+       //      tmp[5]=fRDCutsAnalysis->GetPIDBitMask(d);         
+       tmp[6]=fRDCutsAnalysis->GetPIDTrackTPCTOFBitMap((AliAODTrack*)d->GetDaughter(0));
+       tmp[7]=fRDCutsAnalysis->GetPIDTrackTPCTOFBitMap((AliAODTrack*)d->GetDaughter(1));
+       tmp[8]=fRDCutsAnalysis->GetPIDTrackTPCTOFBitMap((AliAODTrack*)d->GetDaughter(2));
+       tmp[9]=d->PtProng(0);
+       tmp[10]=d->PtProng(1);
+       tmp[11]=d->PtProng(2);
+       tmp[12]=d->PProng(0);
+       tmp[13]=d->PProng(1);
+       tmp[14]=d->PProng(2);
+       tmp[15]=cosp;
+       tmp[16]=cxy;
+       tmp[17]=dlen;
+       tmp[18]=d->NormalizedDecayLength();
+       tmp[19]=d->DecayLengthXY();
+       tmp[20]=dlxy;
+       tmp[21]=d->InvMassDplus();
+       tmp[22]=sigvert;
+       tmp[23]=d->Getd0Prong(0);
+       tmp[24]=d->Getd0Prong(1);
+       tmp[25]=d->Getd0Prong(2);
+       tmp[26]=maxdca;
+       tmp[27]=ntracks;
+       tmp[28]=fRDCutsAnalysis->GetCentrality(aod);
+       tmp[29]=runNumber;
+       tmp[30]=d->HasBadDaughters();
        fNtupleDplus->Fill(tmp);
        PostData(4,fNtupleDplus);
       }
@@ -1041,7 +1004,7 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
          fMassHist[index]->Fill(invMass);
          if(fCutsDistr){
            Float_t fact=1.;
-           Float_t factor[3];
+           Float_t factor[3]={1.,1.,1.};
            if(fUseStrangeness) fact=GetStrangenessWeights(d,arrayMC,factor);
            fCosPHist[index]->Fill(cosp,fact);
            fDLenHist[index]->Fill(dlen,fact);
@@ -1070,8 +1033,8 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
          }
        }else{//outside fidAcc
          if(labDp>=0){
-           fYVsPtSig->Fill(ptCand,rapid);
-           if(passTightCuts)fYVsPtSigTC->Fill(ptCand,rapid);
+           fYVsPtSig->Fill(ptCand,rapid, invMass);
+           if(passTightCuts)fYVsPtSigTC->Fill(ptCand,rapid, invMass);
          }
        }
       }//readmc
@@ -1225,9 +1188,12 @@ void AliAnalysisTaskSEDplus::CreateImpactParameterHistos(){
   // Histos for impact paramter study
 
   Int_t nmassbins=GetNBinsHistos();
+  Double_t maxmult;
+  if(fSystem==1) maxmult=5000;
+  else maxmult=200;
   Int_t nbins[6]={nmassbins,200,fNImpParBins,5,50,100};
   Double_t xmin[6]={fLowmasslimit,0.,fLowerImpPar,0.95,0.,-0.5};
-  Double_t xmax[6]={fUpmasslimit,20.,fHigherImpPar,1.,1.,99.5};
+  Double_t xmax[6]={fUpmasslimit,40.,fHigherImpPar,1.,1.,maxmult};
 
   fHistMassPtImpParTC[0]=new THnSparseF("hMassPtImpParAll",
                                        "Mass vs. pt vs.imppar - All",
@@ -1261,25 +1227,15 @@ void AliAnalysisTaskSEDplus::Terminate(Option_t */*option*/)
     printf("ERROR: fOutput not available\n");
     return;
   }
-  fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
 
-  TString hisname;
-  Int_t index=0;
+  fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
+  if(fHistNEvents){
+    printf("Number of analyzed events = %d\n",(Int_t)fHistNEvents->GetBinContent(2));
+  }else{
+    printf("ERROR: fHistNEvents not available\n");
+    return;
+  }
 
-  for(Int_t i=0;i<fNPtBins;i++){
-    index=GetHistoIndex(i);
-    
-    hisname.Form("hMassPt%dTC",i);
-    fMassHistTC[index]=dynamic_cast<TH1F*>(fOutput->FindObject(hisname.Data()));
-  } 
-    
-  TCanvas *c1=new TCanvas("c1","D+ invariant mass distribution",500,500);
-  c1->cd();
-  TH1F *hMassPt=(TH1F*)fOutput->FindObject("hMassPt3TC");
-  hMassPt->SetLineColor(kBlue);
-  hMassPt->SetXTitle("M[GeV/c^{2}]"); 
-  hMassPt->Draw();
   return;
 }
 //_________________________________________________________________________________________________