]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtCorrection.cxx
indented function MakeAnalysisFillHistograms
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtCorrection.cxx
index 56a3efbe1e3dccba59acb8346d04258ff31a8ef4..fec3e8ec1e8bb6a8ae55e946ae010da540e9a020 100644 (file)
@@ -109,7 +109,8 @@ ClassImp(AlidNdPtCorrection)
   fContTrackMatrix(0),\r
   fContMultTrackMatrix(0),\r
   fCorrMatrixFileName(""),\r
-  fCosmicsHisto(0)\r
+  fCosmicsHisto(0),\r
+  fEventCount(0)\r
 {\r
   // default constructor\r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
@@ -186,7 +187,8 @@ AlidNdPtCorrection::AlidNdPtCorrection(Char_t* name, Char_t* title, TString corr
   fContTrackMatrix(0),\r
   fContMultTrackMatrix(0),\r
   fCorrMatrixFileName(corrMatrixFileName),\r
-  fCosmicsHisto(0)\r
+  fCosmicsHisto(0),\r
+  fEventCount(0)\r
 {\r
   // constructor\r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
@@ -259,6 +261,7 @@ AlidNdPtCorrection::~AlidNdPtCorrection() {
   if(fMCEventPrimTrackMeanPtTrueMult1) delete fMCEventPrimTrackMeanPtTrueMult1; fMCEventPrimTrackMeanPtTrueMult1=0;\r
 \r
   if(fCosmicsHisto) delete fCosmicsHisto; fCosmicsHisto=0;\r
+  if(fEventCount) delete fEventCount; fEventCount=0;\r
 \r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
     if(fRecTrackHist1[i]) delete fRecTrackHist1[i]; fRecTrackHist1[i]=0;\r
@@ -300,8 +303,11 @@ void AlidNdPtCorrection::Init(){
   Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
   */\r
 \r
-  const Int_t ptNbins = 55; \r
-  Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};\r
+\r
+  const Int_t ptNbins = 68;\r
+  Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
+\r
+\r
   Double_t binsEta[etaNbins+1] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
   Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
 \r
@@ -342,8 +348,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCAllPrimTrackMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCAllPrimTrackMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCAllPrimTrackMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCAllPrimTrackMultHist1");\r
-  sprintf(title,"mcPt:mcEta:multiplicity");\r
+  snprintf(name,256,"fMCAllPrimTrackMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:multiplicity");\r
   \r
   fMCAllPrimTrackMultHist1 = new THnSparseF(name,title,3,binsMCAllPrimTrackMultHist1,minMCAllPrimTrackMultHist1,maxMCAllPrimTrackMultHist1);\r
   fMCAllPrimTrackMultHist1->SetBinEdges(0,binsPt);\r
@@ -356,8 +362,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNDEventAllPrimTrackMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCNDEventAllPrimTrackMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCNDEventAllPrimTrackMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCNDEventAllPrimTrackMultHist1");\r
-  sprintf(title,"mcPt:mcEta:multiplicity");\r
+  snprintf(name,256,"fMCNDEventAllPrimTrackMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:multiplicity");\r
   \r
   fMCNDEventAllPrimTrackMultHist1 = new THnSparseF(name,title,3,binsMCNDEventAllPrimTrackMultHist1,minMCNDEventAllPrimTrackMultHist1,maxMCNDEventAllPrimTrackMultHist1);\r
   fMCNDEventAllPrimTrackMultHist1->SetBinEdges(0,binsPt);\r
@@ -370,8 +376,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNSDEventAllPrimTrackMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCNSDEventAllPrimTrackMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCNSDEventAllPrimTrackMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCNSDEventAllPrimTrackMultHist1");\r
-  sprintf(title,"mcPt:mcEta:multiplicity");\r
+  snprintf(name,256,"fMCNSDEventAllPrimTrackMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:multiplicity");\r
   \r
   fMCNSDEventAllPrimTrackMultHist1 = new THnSparseF(name,title,3,binsMCNSDEventAllPrimTrackMultHist1,minMCNSDEventAllPrimTrackMultHist1,maxMCNSDEventAllPrimTrackMultHist1);\r
   fMCNSDEventAllPrimTrackMultHist1->SetBinEdges(0,binsPt);\r
@@ -384,8 +390,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventTriggerPrimTrackMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCEventTriggerPrimTrackMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCEventTriggerPrimTrackMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCTriggerPrimTrackMultHist1");\r
-  sprintf(title,"mcPt:mcEta:multiplicity");\r
+  snprintf(name,256,"fMCTriggerPrimTrackMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:multiplicity");\r
   \r
   fMCTriggerPrimTrackMultHist1 = new THnSparseF(name,title,3,binsMCEventTriggerPrimTrackMultHist1,minMCEventTriggerPrimTrackMultHist1,maxMCEventTriggerPrimTrackMultHist1);\r
   fMCTriggerPrimTrackMultHist1->SetBinEdges(0,binsPt);\r
@@ -398,8 +404,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventPrimTrackMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCEventPrimTrackMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCEventPrimTrackMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCEventPrimTrackMultHist1");\r
-  sprintf(title,"mcPt:mcEta:multiplicity");\r
+  snprintf(name,256,"fMCEventPrimTrackMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:multiplicity");\r
   \r
   fMCEventPrimTrackMultHist1 = new THnSparseF(name,title,3,binsMCEventPrimTrackMultHist1,minMCEventPrimTrackMultHist1,maxMCEventPrimTrackMultHist1);\r
   fMCEventPrimTrackMultHist1->SetBinEdges(0,binsPt);\r
@@ -416,8 +422,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCAllPrimTrackTrueMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCAllPrimTrackTrueMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCAllPrimTrackTrueMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCAllPrimTrackTrueMultHist1");\r
-  sprintf(title,"mcPt:mcEta:true_mult");\r
+  snprintf(name,256,"fMCAllPrimTrackTrueMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:true_mult");\r
   \r
   fMCAllPrimTrackTrueMultHist1 = new THnSparseF(name,title,3,binsMCAllPrimTrackTrueMultHist1,minMCAllPrimTrackTrueMultHist1,maxMCAllPrimTrackTrueMultHist1);\r
   fMCAllPrimTrackTrueMultHist1->SetBinEdges(0,binsPt);\r
@@ -430,8 +436,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNDEventAllPrimTrackTrueMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCNDEventAllPrimTrackTrueMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCNDEventAllPrimTrackTrueMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCNDEventAllPrimTrackTrueMultHist1");\r
-  sprintf(title,"mcPt:mcEta:true_mult");\r
+  snprintf(name,256,"fMCNDEventAllPrimTrackTrueMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:true_mult");\r
   \r
   fMCNDEventAllPrimTrackTrueMultHist1 = new THnSparseF(name,title,3,binsMCNDEventAllPrimTrackTrueMultHist1,minMCNDEventAllPrimTrackTrueMultHist1,maxMCNDEventAllPrimTrackTrueMultHist1);\r
   fMCNDEventAllPrimTrackTrueMultHist1->SetBinEdges(0,binsPt);\r
@@ -444,8 +450,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNSDEventAllPrimTrackTrueMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCNSDEventAllPrimTrackTrueMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCNSDEventAllPrimTrackTrueMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCNSDEventAllPrimTrackTrueMultHist1");\r
-  sprintf(title,"mcPt:mcEta:true_mult");\r
+  snprintf(name,256,"fMCNSDEventAllPrimTrackTrueMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:true_mult");\r
   \r
   fMCNSDEventAllPrimTrackTrueMultHist1 = new THnSparseF(name,title,3,binsMCNSDEventAllPrimTrackTrueMultHist1,minMCNSDEventAllPrimTrackTrueMultHist1,maxMCNSDEventAllPrimTrackTrueMultHist1);\r
   fMCNSDEventAllPrimTrackTrueMultHist1->SetBinEdges(0,binsPt);\r
@@ -458,8 +464,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventTriggerPrimTrackTrueMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCEventTriggerPrimTrackTrueMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCEventTriggerPrimTrackTrueMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCTriggerPrimTrackTrueMultHist1");\r
-  sprintf(title,"mcPt:mcEta:true_mult");\r
+  snprintf(name,256,"fMCTriggerPrimTrackTrueMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:true_mult");\r
   \r
   fMCTriggerPrimTrackTrueMultHist1 = new THnSparseF(name,title,3,binsMCEventTriggerPrimTrackTrueMultHist1,minMCEventTriggerPrimTrackTrueMultHist1,maxMCEventTriggerPrimTrackTrueMultHist1);\r
   fMCTriggerPrimTrackTrueMultHist1->SetBinEdges(0,binsPt);\r
@@ -472,8 +478,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventPrimTrackTrueMultHist1[3]={ptNbins,etaNbins,150};\r
   Double_t minMCEventPrimTrackTrueMultHist1[3]={0.,-1.,-0.5}; \r
   Double_t maxMCEventPrimTrackTrueMultHist1[3]={20.,1.,149.5}; \r
-  sprintf(name,"fMCEventPrimTrackTrueMultHist1");\r
-  sprintf(title,"mcPt:mcEta:true_mult");\r
+  snprintf(name,256,"fMCEventPrimTrackTrueMultHist1");\r
+  snprintf(title,256,"mcPt:mcEta:true_mult");\r
   \r
   fMCEventPrimTrackTrueMultHist1 = new THnSparseF(name,title,3,binsMCEventPrimTrackTrueMultHist1,minMCEventPrimTrackTrueMultHist1,maxMCEventPrimTrackTrueMultHist1);\r
   fMCEventPrimTrackTrueMultHist1->SetBinEdges(0,binsPt);\r
@@ -490,8 +496,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCAllPrimTrackTrueMultHist2[3]={ptNbins,150,150};\r
   Double_t minMCAllPrimTrackTrueMultHist2[3]={0.,-0.5,-0.5}; \r
   Double_t maxMCAllPrimTrackTrueMultHist2[3]={20.,149.5,149.5}; \r
-  sprintf(name,"fMCAllPrimTrackTrueMultHist2");\r
-  sprintf(title,"mcPt:mult:true_mult");\r
+  snprintf(name,256,"fMCAllPrimTrackTrueMultHist2");\r
+  snprintf(title,256,"mcPt:mult:true_mult");\r
   \r
   fMCAllPrimTrackTrueMultHist2 = new THnSparseF(name,title,3,binsMCAllPrimTrackTrueMultHist2,minMCAllPrimTrackTrueMultHist2,maxMCAllPrimTrackTrueMultHist2);\r
   fMCAllPrimTrackTrueMultHist2->SetBinEdges(0,binsPt);\r
@@ -503,8 +509,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNDEventAllPrimTrackTrueMultHist2[3]={ptNbins,150,150};\r
   Double_t minMCNDEventAllPrimTrackTrueMultHist2[3]={0.,-0.5,-0.5}; \r
   Double_t maxMCNDEventAllPrimTrackTrueMultHist2[3]={20.,149.5,149.5}; \r
-  sprintf(name,"fMCNDEventAllPrimTrackTrueMultHist2");\r
-  sprintf(title,"mcPt:mult:true_mult");\r
+  snprintf(name,256,"fMCNDEventAllPrimTrackTrueMultHist2");\r
+  snprintf(title,256,"mcPt:mult:true_mult");\r
   \r
   fMCNDEventAllPrimTrackTrueMultHist2 = new THnSparseF(name,title,3,binsMCNDEventAllPrimTrackTrueMultHist2,minMCNDEventAllPrimTrackTrueMultHist2,maxMCNDEventAllPrimTrackTrueMultHist2);\r
   fMCNDEventAllPrimTrackTrueMultHist2->SetBinEdges(0,binsPt);\r
@@ -516,8 +522,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNSDEventAllPrimTrackTrueMultHist2[3]={ptNbins,150,150};\r
   Double_t minMCNSDEventAllPrimTrackTrueMultHist2[3]={0.,-0.5,-0.5}; \r
   Double_t maxMCNSDEventAllPrimTrackTrueMultHist2[3]={20.,149.5,149.5}; \r
-  sprintf(name,"fMCNSDEventAllPrimTrackTrueMultHist2");\r
-  sprintf(title,"mcPt:mult:true_mult");\r
+  snprintf(name,256,"fMCNSDEventAllPrimTrackTrueMultHist2");\r
+  snprintf(title,256,"mcPt:mult:true_mult");\r
   \r
   fMCNSDEventAllPrimTrackTrueMultHist2 = new THnSparseF(name,title,3,binsMCNSDEventAllPrimTrackTrueMultHist2,minMCNSDEventAllPrimTrackTrueMultHist2,maxMCNSDEventAllPrimTrackTrueMultHist2);\r
   fMCNSDEventAllPrimTrackTrueMultHist2->SetBinEdges(0,binsPt);\r
@@ -529,8 +535,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventTriggerPrimTrackTrueMultHist2[3]={ptNbins,150,150};\r
   Double_t minMCEventTriggerPrimTrackTrueMultHist2[3]={0.,-0.5,-0.5}; \r
   Double_t maxMCEventTriggerPrimTrackTrueMultHist2[3]={20.,149.5,149.5}; \r
-  sprintf(name,"fMCTriggerPrimTrackTrueMultHist2");\r
-  sprintf(title,"mcPt:mult:true_mult");\r
+  snprintf(name,256,"fMCTriggerPrimTrackTrueMultHist2");\r
+  snprintf(title,256,"mcPt:mult:true_mult");\r
   \r
   fMCTriggerPrimTrackTrueMultHist2 = new THnSparseF(name,title,3,binsMCEventTriggerPrimTrackTrueMultHist2,minMCEventTriggerPrimTrackTrueMultHist2,maxMCEventTriggerPrimTrackTrueMultHist2);\r
   fMCTriggerPrimTrackTrueMultHist2->SetBinEdges(0,binsPt);\r
@@ -542,8 +548,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventPrimTrackTrueMultHist2[3]={ptNbins,150,150};\r
   Double_t minMCEventPrimTrackTrueMultHist2[3]={0.,-0.5,-0.5}; \r
   Double_t maxMCEventPrimTrackTrueMultHist2[3]={20.,149.5,149.5}; \r
-  sprintf(name,"fMCEventPrimTrackTrueMultHist2");\r
-  sprintf(title,"mcPt:mult:true_mult");\r
+  snprintf(name,256,"fMCEventPrimTrackTrueMultHist2");\r
+  snprintf(title,256,"mcPt:mult:true_mult");\r
   \r
   fMCEventPrimTrackTrueMultHist2 = new THnSparseF(name,title,3,binsMCEventPrimTrackTrueMultHist2,minMCEventPrimTrackTrueMultHist2,maxMCEventPrimTrackTrueMultHist2);\r
   fMCEventPrimTrackTrueMultHist2->SetBinEdges(0,binsPt);\r
@@ -559,8 +565,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCAllPrimTrackMeanPtTrueMult1[2]={100,150};\r
   Double_t minMCAllPrimTrackMeanPtTrueMult1[2]={0.,-0.5}; \r
   Double_t maxMCAllPrimTrackMeanPtTrueMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCAllPrimTrackMeanPtTrueMult1");\r
-  sprintf(title,"event <mcPt>:true_mult");\r
+  snprintf(name,256,"fMCAllPrimTrackMeanPtTrueMult1");\r
+  snprintf(title,256,"event <mcPt>:true_mult");\r
   \r
   fMCAllPrimTrackMeanPtTrueMult1 = new THnSparseF(name,title,2,binsMCAllPrimTrackMeanPtTrueMult1,minMCAllPrimTrackMeanPtTrueMult1,maxMCAllPrimTrackMeanPtTrueMult1);\r
   fMCAllPrimTrackMeanPtTrueMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -570,8 +576,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCAllPrimTrackMeanPtMult1[2]={100,150};\r
   Double_t minMCAllPrimTrackMeanPtMult1[2]={0.,-0.5}; \r
   Double_t maxMCAllPrimTrackMeanPtMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCAllPrimTrackMeanPtMult1");\r
-  sprintf(title,"event <mcPt>:mult");\r
+  snprintf(name,256,"fMCAllPrimTrackMeanPtMult1");\r
+  snprintf(title,256,"event <mcPt>:mult");\r
   \r
   fMCAllPrimTrackMeanPtMult1 = new THnSparseF(name,title,2,binsMCAllPrimTrackMeanPtMult1,minMCAllPrimTrackMeanPtMult1,maxMCAllPrimTrackMeanPtMult1);\r
   fMCAllPrimTrackMeanPtMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -582,8 +588,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNDEventAllPrimTrackMeanPtTrueMult1[2]={100,150};\r
   Double_t minMCNDEventAllPrimTrackMeanPtTrueMult1[2]={0.,-0.5}; \r
   Double_t maxMCNDEventAllPrimTrackMeanPtTrueMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCNDEventAllPrimTrackMeanPtTrueMult1");\r
-  sprintf(title,"event <mcPt>:true_mult");\r
+  snprintf(name,256,"fMCNDEventAllPrimTrackMeanPtTrueMult1");\r
+  snprintf(title,256,"event <mcPt>:true_mult");\r
   \r
   fMCNDEventAllPrimTrackMeanPtTrueMult1 = new THnSparseF(name,title,2,binsMCNDEventAllPrimTrackMeanPtTrueMult1,minMCNDEventAllPrimTrackMeanPtTrueMult1,maxMCNDEventAllPrimTrackMeanPtTrueMult1);\r
   fMCNDEventAllPrimTrackMeanPtTrueMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -593,8 +599,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNDEventAllPrimTrackMeanPtMult1[2]={100,150};\r
   Double_t minMCNDEventAllPrimTrackMeanPtMult1[2]={0.,-0.5}; \r
   Double_t maxMCNDEventAllPrimTrackMeanPtMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCNDEventAllPrimTrackMeanPtMult1");\r
-  sprintf(title,"event <mcPt>:mult");\r
+  snprintf(name,256,"fMCNDEventAllPrimTrackMeanPtMult1");\r
+  snprintf(title,256,"event <mcPt>:mult");\r
   \r
   fMCNDEventAllPrimTrackMeanPtMult1 = new THnSparseF(name,title,2,binsMCNDEventAllPrimTrackMeanPtMult1,minMCNDEventAllPrimTrackMeanPtMult1,maxMCNDEventAllPrimTrackMeanPtMult1);\r
   fMCNDEventAllPrimTrackMeanPtMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -605,8 +611,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNSDEventAllPrimTrackMeanPtTrueMult1[2]={100,150};\r
   Double_t minMCNSDEventAllPrimTrackMeanPtTrueMult1[2]={0.,-0.5}; \r
   Double_t maxMCNSDEventAllPrimTrackMeanPtTrueMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCNSDEventAllPrimTrackMeanPtTrueMult1");\r
-  sprintf(title,"event <mcPt>:true_mult");\r
+  snprintf(name,256,"fMCNSDEventAllPrimTrackMeanPtTrueMult1");\r
+  snprintf(title,256,"event <mcPt>:true_mult");\r
   \r
   fMCNSDEventAllPrimTrackMeanPtTrueMult1 = new THnSparseF(name,title,2,binsMCNSDEventAllPrimTrackMeanPtTrueMult1,minMCNSDEventAllPrimTrackMeanPtTrueMult1,maxMCNSDEventAllPrimTrackMeanPtTrueMult1);\r
   fMCNSDEventAllPrimTrackMeanPtTrueMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -616,8 +622,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCNSDEventAllPrimTrackMeanPtMult1[2]={100,150};\r
   Double_t minMCNSDEventAllPrimTrackMeanPtMult1[2]={0.,-0.5}; \r
   Double_t maxMCNSDEventAllPrimTrackMeanPtMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCNSDEventAllPrimTrackMeanPtMult1");\r
-  sprintf(title,"event <mcPt>:mult");\r
+  snprintf(name,256,"fMCNSDEventAllPrimTrackMeanPtMult1");\r
+  snprintf(title,256,"event <mcPt>:mult");\r
   \r
   fMCNSDEventAllPrimTrackMeanPtMult1 = new THnSparseF(name,title,2,binsMCNSDEventAllPrimTrackMeanPtMult1,minMCNSDEventAllPrimTrackMeanPtMult1,maxMCNSDEventAllPrimTrackMeanPtMult1);\r
   fMCNSDEventAllPrimTrackMeanPtMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -628,8 +634,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCTriggerPrimTrackMeanPtTrueMult1[2]={100,150};\r
   Double_t minMCTriggerPrimTrackMeanPtTrueMult1[2]={0.,-0.5}; \r
   Double_t maxMCTriggerPrimTrackMeanPtTrueMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCTriggerPrimTrackMeanPtTrueMult1");\r
-  sprintf(title,"event <mcPt>:true_mult");\r
+  snprintf(name,256,"fMCTriggerPrimTrackMeanPtTrueMult1");\r
+  snprintf(title,256,"event <mcPt>:true_mult");\r
   \r
   fMCTriggerPrimTrackMeanPtTrueMult1 = new THnSparseF(name,title,2,binsMCTriggerPrimTrackMeanPtTrueMult1,minMCTriggerPrimTrackMeanPtTrueMult1,maxMCTriggerPrimTrackMeanPtTrueMult1);\r
   fMCTriggerPrimTrackMeanPtTrueMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -639,8 +645,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCTriggerPrimTrackMeanPtMult1[2]={100,150};\r
   Double_t minMCTriggerPrimTrackMeanPtMult1[2]={0.,-0.5}; \r
   Double_t maxMCTriggerPrimTrackMeanPtMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCTriggerPrimTrackMeanPtMult1");\r
-  sprintf(title,"event <mcPt>:mult");\r
+  snprintf(name,256,"fMCTriggerPrimTrackMeanPtMult1");\r
+  snprintf(title,256,"event <mcPt>:mult");\r
   \r
   fMCTriggerPrimTrackMeanPtMult1 = new THnSparseF(name,title,2,binsMCTriggerPrimTrackMeanPtMult1,minMCTriggerPrimTrackMeanPtMult1,maxMCTriggerPrimTrackMeanPtMult1);\r
   fMCTriggerPrimTrackMeanPtMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -651,8 +657,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventPrimTrackMeanPtTrueMult1[2]={100,150};\r
   Double_t minMCEventPrimTrackMeanPtTrueMult1[2]={0.,-0.5}; \r
   Double_t maxMCEventPrimTrackMeanPtTrueMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCEventPrimTrackMeanPtTrueMult1");\r
-  sprintf(title,"event <mcPt>:true_mult");\r
+  snprintf(name,256,"fMCEventPrimTrackMeanPtTrueMult1");\r
+  snprintf(title,256,"event <mcPt>:true_mult");\r
   \r
   fMCEventPrimTrackMeanPtTrueMult1 = new THnSparseF(name,title,2,binsMCEventPrimTrackMeanPtTrueMult1,minMCEventPrimTrackMeanPtTrueMult1,maxMCEventPrimTrackMeanPtTrueMult1);\r
   fMCEventPrimTrackMeanPtTrueMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -662,8 +668,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsMCEventPrimTrackMeanPtMult1[2]={100,150};\r
   Double_t minMCEventPrimTrackMeanPtMult1[2]={0.,-0.5}; \r
   Double_t maxMCEventPrimTrackMeanPtMult1[2]={10.,149.5}; \r
-  sprintf(name,"fMCEventPrimTrackMeanPtMult1");\r
-  sprintf(title,"event <mcPt>:mult");\r
+  snprintf(name,256,"fMCEventPrimTrackMeanPtMult1");\r
+  snprintf(title,256,"event <mcPt>:mult");\r
   \r
   fMCEventPrimTrackMeanPtMult1 = new THnSparseF(name,title,2,binsMCEventPrimTrackMeanPtMult1,minMCEventPrimTrackMeanPtMult1,maxMCEventPrimTrackMeanPtMult1);\r
   fMCEventPrimTrackMeanPtMult1->GetAxis(0)->SetTitle("<mcPt> (GeV/c)");\r
@@ -683,8 +689,8 @@ void AlidNdPtCorrection::Init(){
     Int_t binsRecTrackHist1[3]={ptNbins,etaNbins,90};\r
     Double_t minRecTrackHist1[3]={0.,-1.,0.}; \r
     Double_t maxRecTrackHist1[3]={10.,1.,2.*TMath::Pi()};\r
-    sprintf(name,"fRecTrackHist1_%d",i);\r
-    sprintf(title,"Pt:Eta:Phi");\r
+    snprintf(name,256,"fRecTrackHist1_%d",i);\r
+    snprintf(title,256,"Pt:Eta:Phi");\r
   \r
     fRecTrackHist1[i] = new THnSparseF(name,title,3,binsRecTrackHist1,minRecTrackHist1,maxRecTrackHist1);\r
     fRecTrackHist1[i]->SetBinEdges(0,binsPt);\r
@@ -724,8 +730,8 @@ void AlidNdPtCorrection::Init(){
   for(Int_t i=0; i<8; i++) \r
   {\r
     // THnSparse track histograms\r
-    sprintf(name,"fCorrRecTrackMultHist1_%d",i);\r
-    sprintf(title,"Pt:Eta:mult");\r
+    snprintf(name,256,"fCorrRecTrackMultHist1_%d",i);\r
+    snprintf(title,256,"Pt:Eta:mult");\r
     fCorrRecTrackMultHist1[i] = new THnSparseF(name,title,3,binsCorrRecTrackMultHist1,minCorrRecTrackMultHist1,maxCorrRecTrackMultHist1);\r
     fCorrRecTrackMultHist1[i]->SetBinEdges(0,binsPt);\r
     fCorrRecTrackMultHist1[i]->SetBinEdges(1,binsEta);\r
@@ -735,8 +741,8 @@ void AlidNdPtCorrection::Init(){
     fCorrRecTrackMultHist1[i]->Sumw2();\r
 \r
     // THnSparse track histograms\r
-    sprintf(name,"fCorrRecTrackTrueMultHist1_%d",i);\r
-    sprintf(title,"Pt:Eta:true_mult");\r
+    snprintf(name,256,"fCorrRecTrackTrueMultHist1_%d",i);\r
+    snprintf(title,256,"Pt:Eta:true_mult");\r
     fCorrRecTrackTrueMultHist1[i] = new THnSparseF(name,title,3,binsCorrRecTrackTrueMultHist1,minCorrRecTrackTrueMultHist1,maxCorrRecTrackTrueMultHist1);\r
     fCorrRecTrackTrueMultHist1[i]->SetBinEdges(0,binsPt);\r
     fCorrRecTrackTrueMultHist1[i]->SetBinEdges(1,binsEta);\r
@@ -746,8 +752,8 @@ void AlidNdPtCorrection::Init(){
     fCorrRecTrackTrueMultHist1[i]->Sumw2();\r
 \r
     //\r
-    sprintf(name,"fCorrRecTrackTrueMultHist2_%d",i);\r
-    sprintf(title,"Pt:mult:true_mult");\r
+    snprintf(name,256,"fCorrRecTrackTrueMultHist2_%d",i);\r
+    snprintf(title,256,"Pt:mult:true_mult");\r
     fCorrRecTrackTrueMultHist2[i] = new THnSparseF(name,title,3,binsCorrRecTrackTrueMultHist2,minCorrRecTrackTrueMultHist2,maxCorrRecTrackTrueMultHist2);\r
     fCorrRecTrackTrueMultHist2[i]->SetBinEdges(0,binsPt);\r
     fCorrRecTrackTrueMultHist2[i]->GetAxis(0)->SetTitle("Pt (GeV/c)");\r
@@ -756,23 +762,23 @@ void AlidNdPtCorrection::Init(){
     fCorrRecTrackTrueMultHist2[i]->Sumw2();\r
 \r
     // THnSparse track histograms\r
-    sprintf(name,"fCorrRecTrackMeanPtMultHist1_%d",i);\r
-    sprintf(title,"<Pt>:mult");\r
+    snprintf(name,256,"fCorrRecTrackMeanPtMultHist1_%d",i);\r
+    snprintf(title,256,"<Pt>:mult");\r
     fCorrRecTrackMeanPtMultHist1[i] = new THnSparseF(name,title,2,binsCorrRecTrackMeanPtMultHist1,minCorrRecTrackMeanPtMultHist1,maxCorrRecTrackMeanPtMultHist1);\r
     fCorrRecTrackMeanPtMultHist1[i]->GetAxis(0)->SetTitle("<Pt> (GeV/c)");\r
     fCorrRecTrackMeanPtMultHist1[i]->GetAxis(1)->SetTitle("multiplicity");\r
     fCorrRecTrackMeanPtMultHist1[i]->Sumw2();\r
 \r
     // THnSparse track histograms\r
-    sprintf(name,"fCorrRecTrackMeanPtTrueMultHist1_%d",i);\r
-    sprintf(title,"<Pt>:true_mult");\r
+    snprintf(name,256,"fCorrRecTrackMeanPtTrueMultHist1_%d",i);\r
+    snprintf(title,256,"<Pt>:true_mult");\r
     fCorrRecTrackMeanPtTrueMultHist1[i] = new THnSparseF(name,title,2,binsCorrRecTrackMeanPtTrueMultHist1,minCorrRecTrackMeanPtTrueMultHist1,maxCorrRecTrackMeanPtTrueMultHist1);\r
     fCorrRecTrackMeanPtTrueMultHist1[i]->GetAxis(0)->SetTitle("<Pt> (GeV/c)");\r
     fCorrRecTrackMeanPtTrueMultHist1[i]->GetAxis(1)->SetTitle("true multiplicity");\r
     fCorrRecTrackMeanPtTrueMultHist1[i]->Sumw2();\r
 \r
-    sprintf(name,"fCorrRecTrackPt1_%d",i);\r
-    sprintf(title,"pt small bining");\r
+    snprintf(name,256,"fCorrRecTrackPt1_%d",i);\r
+    snprintf(title,256,"pt small bining");\r
     fCorrRecTrackPt1[i] = new THnSparseF(name,title,1,binsCorrRecTrackPt1,minCorrRecTrackPt1,maxCorrRecTrackPt1);\r
     fCorrRecTrackPt1[i]->GetAxis(0)->SetTitle("Pt (GeV/c)");\r
     fCorrRecTrackPt1[i]->Sumw2();\r
@@ -816,8 +822,8 @@ void AlidNdPtCorrection::Init(){
   for(Int_t i=0; i<5; i++) \r
   {\r
     // event corrected histograms\r
-    sprintf(name,"fCorrRecEventHist1_%d",i);\r
-    sprintf(title,"mcZv:mult");\r
+    snprintf(name,256,"fCorrRecEventHist1_%d",i);\r
+    snprintf(title,256,"mcZv:mult");\r
     fCorrRecEventHist1[i] = new THnSparseF("fCorrRecEventHist1","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
     fCorrRecEventHist1[i]->SetBinEdges(0,binsZv);\r
     fCorrRecEventHist1[i]->GetAxis(0)->SetTitle("Zv (cm)");\r
@@ -825,8 +831,8 @@ void AlidNdPtCorrection::Init(){
     fCorrRecEventHist1[i]->Sumw2();\r
 \r
     // empty event corrected histograms\r
-    sprintf(name,"fCorrRecEventHist2_%d",i);\r
-    sprintf(title,"mcZv:mult");\r
+    snprintf(name,256,"fCorrRecEventHist2_%d",i);\r
+    snprintf(title,256,"mcZv:mult");\r
     fCorrRecEventHist2[i] = new THnSparseF("fCorrRecEventHist2","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
     fCorrRecEventHist2[i]->SetBinEdges(0,binsZv);\r
     fCorrRecEventHist2[i]->GetAxis(0)->SetTitle("Zv (cm)");\r
@@ -840,8 +846,8 @@ void AlidNdPtCorrection::Init(){
   Int_t binsCosmicsHisto[3]=  {151, 300, ptNbins};\r
   Double_t minCosmicsHisto[3]={-1.5, -2.*TMath::Pi(), 0.0}; \r
   Double_t maxCosmicsHisto[3]={ 1.5, 2.*TMath::Pi(), 16.0}; \r
-  sprintf(name,"fCosmicsHisto");\r
-  sprintf(title,"deta:dphi:pt");\r
+  snprintf(name,256,"fCosmicsHisto");\r
+  snprintf(title,256,"deta:dphi:pt");\r
   \r
   fCosmicsHisto = new THnSparseF(name,title,3,binsCosmicsHisto,minCosmicsHisto,maxCosmicsHisto);\r
   fCosmicsHisto->SetBinEdges(2,binsPt);\r
@@ -850,6 +856,17 @@ void AlidNdPtCorrection::Init(){
   fCosmicsHisto->GetAxis(2)->SetTitle("pt (GV/c)");\r
   fCosmicsHisto->Sumw2();\r
 \r
+  //\r
+  Int_t binsEventCount[3]={2,2,2};\r
+  Double_t minEventCount[3]={0,0,0}; \r
+  Double_t maxEventCount[3]={2,2,2}; \r
+  fEventCount = new THnSparseF("fEventCount","trig vs trig+vertex",3,binsEventCount,minEventCount,maxEventCount);\r
+  fEventCount->GetAxis(0)->SetTitle("trig");\r
+  fEventCount->GetAxis(1)->SetTitle("trig+vert");\r
+  fEventCount->GetAxis(2)->SetTitle("selected");\r
+  fEventCount->Sumw2();\r
+\r
+\r
   // init output folder\r
   fCorrectionFolder = CreateFolder("folderdNdPt","Correction dNdPt Folder");\r
 \r
@@ -868,6 +885,7 @@ void AlidNdPtCorrection::Init(){
       fEventMultCorrelationMatrix = (THnSparseF*)folder->FindObject("event_mult_correlation_matrix");\r
       if(!fEventMultCorrelationMatrix) {\r
          Printf("No %s matrix \n", "event_mult_correlation_matrix");\r
+        return;\r
       }\r
 \r
       //\r
@@ -878,24 +896,28 @@ void AlidNdPtCorrection::Init(){
       fCorrTriggerMBtoNDEventMatrix = (THnSparseF*)folder->FindObject("zv_mult_trig_MBtoND_corr_matrix");\r
       if(!fCorrTriggerMBtoNDEventMatrix) {\r
          Printf("No %s matrix \n", "zv_mult_trig_MBtoND_corr_matrix");\r
+        return;\r
       }\r
 \r
       // trigger bias correction (MBtoNSD)\r
       fCorrTriggerMBtoNSDEventMatrix = (THnSparseF*)folder->FindObject("zv_mult_trig_MBtoNSD_corr_matrix");\r
       if(!fCorrTriggerMBtoNSDEventMatrix) {\r
          Printf("No %s matrix \n", "zv_mult_trig_MBtoNSD_corr_matrix");\r
+        return;\r
       }\r
 \r
       // trigger bias correction (MBtoInel)\r
       fCorrTriggerMBtoInelEventMatrix = (THnSparseF*)folder->FindObject("zv_mult_trig_MBtoInel_corr_matrix");\r
       if(!fCorrTriggerMBtoInelEventMatrix) {\r
          Printf("No %s matrix \n", "zv_mult_trig_MBtoInel_corr_matrix"); \r
+        return;\r
       }\r
      \r
       // vertex reconstruction efficiency correction\r
       fCorrEventMatrix = (THnSparseF*)folder->FindObject("zv_mult_event_corr_matrix");\r
       if(!fCorrEventMatrix) {\r
          Printf("No %s matrix \n", "zv_mult_event_corr_matrix");\r
+        return;\r
       }\r
 \r
       //\r
@@ -904,16 +926,19 @@ void AlidNdPtCorrection::Init(){
       fZvNorm = (TH1D*)folder->FindObject("zv_distribution_norm");\r
       if(!fZvNorm) {\r
          Printf("No %s matrix \n", "fZvNorm");\r
+        return;\r
       }\r
 \r
       fZvEmptyEventsNorm = (TH1D*)folder->FindObject("zv_empty_events_norm");\r
       if(!fZvEmptyEventsNorm) {\r
          Printf("No %s matrix \n", "fZvEmptyEventsNorm");\r
+        return;\r
       }\r
 \r
       fLHCBin0Background = (TH1D*)folder->FindObject("hLHCBin0Background");\r
       if(!fLHCBin0Background) {\r
          Printf("No %s matrix \n", "fLHCBin0Background");\r
+        return;\r
       }\r
 \r
       //\r
@@ -924,48 +949,56 @@ void AlidNdPtCorrection::Init(){
       fCorrTriggerMBtoNDTrackEventMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_trig_MBtoND_corr_matrix");\r
       if(!fCorrTriggerMBtoNDTrackEventMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_trig_MBtoND_corr_matrix");\r
+        return;\r
       }\r
 \r
       // trigger bias correction (MBtoNSD)\r
       fCorrTriggerMBtoNSDTrackEventMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_trig_MBtoNSD_corr_matrix");\r
       if(!fCorrTriggerMBtoNSDTrackEventMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_trig_MBtoNSD_corr_matrix");\r
+        return;\r
       }\r
 \r
       // trigger bias correction (MBtoInel) \r
       fCorrTriggerMBtoInelTrackEventMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_trig_MBtoInel_corr_matrix");\r
       if(!fCorrTriggerMBtoInelTrackEventMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_trig_MBtoInel_corr_matrix");\r
+        return;\r
       }\r
     \r
       // vertex reconstruction efficiency correction (zv,pt,eta)\r
       fCorrTrackEventMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_event_corr_matrix");\r
       if(!fCorrTrackEventMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_event_corr_matrix");\r
+        return;\r
       }\r
 \r
       // track reconstruction efficiency correction (zv,pt,eta)\r
       fCorrTrackMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_corr_matrix");\r
       if(!fCorrTrackMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_corr_matrix");\r
+        return;\r
       }\r
 \r
       // high pt track reconstruction efficiency correction (zv,pt,eta)\r
       fCorrHighPtTrackMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_highPt_track_corr_matrix");\r
       if(!fCorrHighPtTrackMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_highPt_track_corr_matrix");\r
+        return;\r
       }\r
 \r
       // secondary tracks contamination correction (zv,pt,eta)\r
       fContTrackMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_track_cont_matrix");\r
       if(!fContTrackMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_track_cont_matrix");\r
+        return;\r
       }\r
 \r
       // multiply reconstructed tracks correction\r
       fContMultTrackMatrix = (THnSparseF*)folder->FindObject("zv_pt_eta_mult_track_cont_matrix");\r
       if(!fContMultTrackMatrix) {\r
          Printf("No %s matrix \n", "zv_pt_eta_mult_track_cont_matrix");\r
+        return;\r
       }\r
     }\r
   }\r
@@ -993,25 +1026,134 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
     return;\r
   }\r
 \r
+\r
   // trigger selection\r
   Bool_t isEventTriggered = kTRUE;\r
+  AliPhysicsSelection *trigSel = NULL;\r
+  AliTriggerAnalysis *trigAna = NULL; // needed for andV0\r
+\r
   if(evtCuts->IsTriggerRequired())  \r
   {\r
-    AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+    //\r
+    trigSel = GetPhysicsTriggerSelection();\r
     if(!trigSel) {\r
       AliDebug(AliLog::kError, "cannot get trigSel");\r
       return;\r
     }\r
-\r
-    if(IsUseMCInfo()) { \r
+    \r
+    if(IsUseMCInfo()) \r
+    { \r
       trigSel->SetAnalyzeMC();\r
-      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+\r
+      if(GetParticleMode() == AlidNdPtHelper::kVZEROCase1)\r
+      {\r
+        // check V0 systematics (case1)\r
+       // Initialization done in the macro\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+          return;\r
+\r
+        //trigAna->SetV0HwPars(15, 61.5, 86.5);\r
+        //trigAna->SetV0AdcThr(15);\r
+\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 & kVZEROCase1  %d \n",isEventTriggered);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else if(GetParticleMode() == AlidNdPtHelper::kVZEROCase2)\r
+      {\r
+        // check V0 systematics (case2 only in MC)\r
+       // Initialization done in the macro\r
+\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+          return;\r
+\r
+        //trigAna->SetV0HwPars(0, 0, 125);\r
+        //trigAna->SetV0AdcThr(0);\r
+\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+       if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else {\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 %d \n",isEventTriggered);\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          trigAna = trigSel->GetTriggerAnalysis();\r
+          if(!trigAna) \r
+            return;\r
+\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
     }\r
     else {\r
-      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+      //\r
+      // 0-multiplicity bin for LHC background correction\r
+      //\r
+      if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
+         GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
+         GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt ) \r
+      {\r
+        trigSel->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroTrackSPDvtx);\r
+      } else {\r
+        trigSel->SetBin0CallbackViaPointer(&AlidNdPtAnalysis::IsBinZeroSPDvtx);\r
+      }\r
+\r
+      if(GetParticleMode() == AlidNdPtHelper::kVZEROCase1)\r
+      {\r
+        // check V0 systematics (case1)\r
+       // Initialization done in the macro\r
+        trigAna = trigSel->GetTriggerAnalysis();\r
+        if(!trigAna) \r
+          return;\r
+\r
+        //trigAna->SetV0HwPars(15, 61.5, 86.5);\r
+        //trigAna->SetV0AdcThr(15);\r
+\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
+      else {\r
+        isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+        //printf("MB1 %d \n",isEventTriggered);\r
+       \r
+        if(GetTrigger() == AliTriggerAnalysis::kV0AND) \r
+       {\r
+          trigAna = trigSel->GetTriggerAnalysis();\r
+          if(!trigAna) \r
+            return;\r
+\r
+          isEventTriggered = trigAna->IsOfflineTriggerFired(esdEvent, GetTrigger());\r
+          //printf("V0AND %d \n",isEventTriggered);\r
+        }\r
+      }\r
     }\r
   }\r
-  \r
+\r
   // use MC information\r
   AliHeader* header = 0;\r
   AliGenEventHeader* genHeader = 0;\r
@@ -1071,11 +1213,13 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
     Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
     Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
     vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
+    if(!vtxESD) return;\r
     isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE);\r
   }\r
 \r
   if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
     vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
+    if(!vtxESD) return;\r
     isRecVertex = kTRUE;\r
   }\r
 \r
@@ -1099,32 +1243,35 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
        multMBTracks = mult->GetNumberOfTracklets();\r
     \r
   } \r
-  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
-           GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt)\r
+  else if( GetAnalysisMode() == AlidNdPtHelper::kTPCITS || \r
+           GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
+           GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || \r
+          GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt )\r
   {\r
-     if(vtxESD->GetStatus() && isRecVertex)\r
+     if(vtxESD && vtxESD->GetStatus() && isRecVertex)\r
        multMBTracks = vtxESD->GetNContributors();\r
 \r
   }\r
   else {\r
-    AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
+    AliDebug(AliLog::kError, Form("Found analysis type %d", GetAnalysisMode()));\r
     return; \r
   }\r
 \r
+  Bool_t isEventSelected = kTRUE;\r
+  if(evtCuts->IsEventSelectedRequired()) \r
+  { \r
+     // select events with at least \r
+     // one prompt track in acceptance\r
+     // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
 \r
-  /*\r
-  //\r
-  // set 0-bin\r
-  //\r
-  if( GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtx || \r
-      GetAnalysisMode() == AlidNdPtHelper::kTPCTrackSPDvtxUpdate || \r
-      GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) \r
-  {\r
-      if(AlidNdPtAnalysis::IsBinZeroTrackSPDvtx(esdEvent)) multMBTracks = 0;\r
-  } else {\r
-      if(AlidNdPtAnalysis::IsBinZeroSPDvtx(esdEvent)) multMBTracks = 0;\r
+     isEventSelected = AlidNdPtHelper::SelectEvent(esdEvent,esdTrackCuts);\r
+     //printf("isEventSelected %d \n", isEventSelected);\r
   }\r
-  */\r
+\r
+  Bool_t isTrigAndVertex = isEventTriggered && isEventOK;\r
+  Double_t vEventCount[3] = { isEventTriggered, isTrigAndVertex, isEventSelected };\r
+  fEventCount->Fill(vEventCount);\r
 \r
   //\r
   // correct event and track histograms\r
@@ -1134,7 +1281,8 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
   Int_t *labelsRec=0;\r
   Bool_t isCosmic = kFALSE;\r
 \r
-  if(isEventOK && isEventTriggered)\r
+\r
+  if(isEventOK && isEventTriggered && isEventSelected)\r
   {\r
     // get all charged tracks\r
     allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
@@ -1187,27 +1335,10 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
 \r
       if(esdTrackCuts->AcceptTrack(track)) \r
       {\r
-        if(GetAnalysisMode() == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt) {\r
-          if(AlidNdPtHelper::IsGoodImpPar(track) && accCuts->AcceptTrack(track)) multRecTemp++;\r
-        }\r
-       else {\r
           if(accCuts->AcceptTrack(track)) multRecTemp++;\r
-        }\r
       }  \r
     }\r
 \r
-    // check multiplicity\r
-    const AliMultiplicity* mult = esdEvent->GetMultiplicity();\r
-    Int_t trackletMult = 0;\r
-    if (mult) {\r
-       for(Int_t i=0; i<mult->GetNumberOfTracklets(); i++) {\r
-          if(TMath::Abs(mult->GetEta(i)) < accCuts->GetMaxEta() )\r
-           trackletMult++;\r
-       }\r
-    }\r
-    // use tracklet multiplicity\r
-    multRecTemp = trackletMult;\r
-\r
     //\r
     for(Int_t i=0; i<entries;++i) \r
     {\r
@@ -1225,7 +1356,7 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
         \r
       // track-level corrections\r
       if(!esdTrackCuts->AcceptTrack(track))  continue;\r
-      if(GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt && !AlidNdPtHelper::IsGoodImpPar(track)) continue;\r
+      //if(GetAnalysisMode()==AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt && !AlidNdPtHelper::IsGoodImpPar(track)) continue;\r
 \r
         // cosmics analysis\r
         isCosmic = kFALSE;\r
@@ -1341,14 +1472,14 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
     Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
     fRecEventHist1->Fill(vRecEventHist1);\r
 \r
-    // correlation track multiplicity vs tracklet multiplicity\r
+    // correlation track multiplicity vs MB track multiplicity\r
     Double_t vRecEventMultHist1[3] = {multRec, multMBTracks};\r
     fRecEventMultHist1->Fill(vRecEventMultHist1);\r
   }\r
 \r
   // empty events corrections\r
   // no reconstructed zv\r
-  if( isEventTriggered && multMBTracks==0 ) \r
+  if( isEventTriggered && multMBTracks==0 && isEventSelected \r
   {\r
     if(GetAnalysisMode()==AlidNdPtHelper::kMCRec && IsUseMCInfo()) \r
     {\r
@@ -1363,8 +1494,20 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
 \r
   if(IsUseMCInfo())  \r
   {\r
+    if(!mcEvent) return; \r
+\r
+    Bool_t isMCEventSelected = kTRUE;\r
+    if(evtCuts->IsEventSelectedRequired()) \r
+    { \r
+      // select events with at least \r
+      // one MC primary track in acceptance\r
+      // pT>0.5 GeV/c, |eta|<0.8 for the Cross Section studies\r
+      isMCEventSelected = AlidNdPtHelper::SelectMCEvent(mcEvent);\r
+      //printf("isMCEventSelected %d \n", isMCEventSelected);\r
+    }\r
+\r
     // select MC events \r
-    if(evtCuts->AcceptMCEvent(mcEvent))\r
+    if(evtCuts->AcceptMCEvent(mcEvent) && isMCEventSelected)\r
     {\r
       //\r
       // event histograms\r
@@ -1400,6 +1543,8 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
         continue;\r
 \r
         // only charged particles\r
+         \r
+        if(!particle->GetPDG()) continue;\r
         Double_t charge = particle->GetPDG()->Charge()/3.;\r
         if (TMath::Abs(charge) < 0.001)\r
           continue;\r
@@ -1536,7 +1681,7 @@ void AlidNdPtCorrection::FillHistograms(AlidNdPtHelper::EventObject eventObj, Do
     Double_t corrToInelF0 = GetCorrFactZvMult(fCorrTriggerMBtoInelEventMatrix,zv,multMBTracks);\r
     Double_t corrToNDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNDEventMatrix,zv,multMBTracks);\r
     Double_t corrToNSDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNSDEventMatrix,zv,multMBTracks);\r
-    printf("factLHCBack %f, factZ %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",factLHCBack,factZ,corrToInelF0,corrToNDF0,corrToNSDF0);\r
+    //printf("factLHCBack %f, factZ %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",factLHCBack,factZ,corrToInelF0,corrToNDF0,corrToNSDF0);\r
 \r
     fCorrRecEventHist2[0]->Fill(vEventMatrix);\r
     fCorrRecEventHist2[1]->Fill(vEventMatrix,factLHCBack*factZ);\r
@@ -1566,6 +1711,7 @@ void AlidNdPtCorrection::FillHistograms(AliESDtrack * const esdTrack, AliStack *
     TParticle* particle = stack->Particle(label);\r
     if(!particle) return;\r
    \r
+    if(!particle->GetPDG()) return;\r
     Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3\r
     if(TMath::Abs(gq)<0.001) return;\r
     Float_t gpt = particle->Pt();\r
@@ -1652,6 +1798,7 @@ void AlidNdPtCorrection::FillHistograms(AliStack * const stack, Int_t /*label*/,
   if(mother) mother_pdg = TMath::Abs(mother->GetPdgCode()); // take abs for visualisation only\r
   Int_t mech = particle->GetUniqueID(); // production mechanism\r
 \r
+  if(!particle->GetPDG()) return;\r
   Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3 \r
   Float_t gpt = particle->Pt();\r
   Float_t qgpt = particle->Pt() * gq;\r
@@ -1776,11 +1923,18 @@ Long64_t AlidNdPtCorrection::Merge(TCollection* const list)
 \r
   // collection of generated histograms\r
 \r
+  // physics selection\r
+  TList *collPhysSelection = new TList;\r
+\r
   Int_t count=0;\r
   while((obj = iter->Next()) != 0) {\r
     AlidNdPtCorrection* entry = dynamic_cast<AlidNdPtCorrection*>(obj);\r
     if (entry == 0) continue; \r
   \r
+    collPhysSelection->Add(entry->GetPhysicsTriggerSelection());\r
+\r
+    fEventCount->Add(entry->fEventCount);\r
+\r
     fMCEventHist1->Add(entry->fMCEventHist1);\r
     fRecEventHist1->Add(entry->fRecEventHist1);\r
     fRecEventMultHist1->Add(entry->fRecEventMultHist1);\r
@@ -1846,6 +2000,11 @@ Long64_t AlidNdPtCorrection::Merge(TCollection* const list)
   count++;\r
   }\r
 \r
+  //\r
+  AliPhysicsSelection *trigSelection = GetPhysicsTriggerSelection();\r
+  trigSelection->Merge(collPhysSelection);\r
+  if(collPhysSelection) delete collPhysSelection;\r
+\r
 return count;\r
 }\r
  \r
@@ -1884,6 +2043,7 @@ void AlidNdPtCorrection::Analyse()
   TH2 *h2D = 0; \r
 \r
   TObjArray *aFolderObj = new TObjArray;\r
+  if(!aFolderObj) return;\r
 \r
   //\r
   // get cuts\r
@@ -1907,6 +2067,12 @@ void AlidNdPtCorrection::Analyse()
  \r
   printf("minEta %f, maxEta %f \n",minEta, maxEta);\r
 \r
+  //\r
+  // LHC backgraund in all and 0-bins\r
+  //\r
+  AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+  trigSel->SaveHistograms("physics_selection");\r
+\r
   //\r
   // cosmics background histo\r
   //\r