]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtAnalysis.cxx
Corrected compilation error with gcc 4.4
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtAnalysis.cxx
index d53815e4cb539131be3a7513ec2e49c428a43255..e0fcb8f7fbc71e0d725d880f250dfd92f4c8bc4e 100644 (file)
 \r
 #include "AlidNdPtEventCuts.h"\r
 #include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
 \r
+#include "AliPWG0Helper.h"\r
+#include "AlidNdPtHelper.h"\r
 #include "AlidNdPtAnalysis.h"\r
 \r
 using namespace std;\r
@@ -90,6 +93,7 @@ ClassImp(AlidNdPtAnalysis)
   fRecTrackNSDEventMatrix(0),\r
 \r
   // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)\r
+  fGenTrackMatrix(0),\r
   fGenPrimTrackMatrix(0),\r
   fRecPrimTrackMatrix(0),\r
 \r
@@ -112,7 +116,10 @@ ClassImp(AlidNdPtAnalysis)
   fRecMCTrackHist1(0),\r
 \r
   //multple reconstructed tracks\r
-  fMCMultRecTrackHist1(0) \r
+  fMCMultRecTrackHist1(0), \r
+\r
+  // rec. track control histograms\r
+  fRecTrackHist2(0)\r
 {\r
   // default constructor\r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
@@ -177,6 +184,7 @@ AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,t
   fRecTrackNSDEventMatrix(0),\r
 \r
   // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)\r
+  fGenTrackMatrix(0),\r
   fGenPrimTrackMatrix(0),\r
   fRecPrimTrackMatrix(0),\r
 \r
@@ -199,7 +207,10 @@ AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,t
   fRecMCTrackHist1(0),\r
 \r
   //multple reconstructed tracks\r
-  fMCMultRecTrackHist1(0) \r
+  fMCMultRecTrackHist1(0), \r
+\r
+  // rec. track control histograms\r
+  fRecTrackHist2(0)\r
 {\r
   // constructor\r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
@@ -258,6 +269,7 @@ AlidNdPtAnalysis::~AlidNdPtAnalysis() {
   if(fRecTrackNSDEventMatrix) delete fRecTrackNSDEventMatrix; fRecTrackNSDEventMatrix=0;\r
 \r
   //\r
+  if(fGenTrackMatrix) delete fGenTrackMatrix; fGenTrackMatrix=0;\r
   if(fGenPrimTrackMatrix) delete fGenPrimTrackMatrix; fGenPrimTrackMatrix=0;\r
   if(fRecPrimTrackMatrix) delete fRecPrimTrackMatrix; fRecPrimTrackMatrix=0;\r
   //\r
@@ -284,6 +296,7 @@ AlidNdPtAnalysis::~AlidNdPtAnalysis() {
   }\r
   if(fRecMCTrackHist1) delete fRecMCTrackHist1; fRecMCTrackHist1=0;\r
   if(fMCMultRecTrackHist1) delete fMCMultRecTrackHist1; fMCMultRecTrackHist1=0; \r
+  if(fRecTrackHist2) delete fRecTrackHist2; fRecTrackHist2=0; \r
   //\r
   if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0;\r
 }\r
@@ -336,96 +349,96 @@ void AlidNdPtAnalysis::Init(){
   Double_t minEventMatrix[2]={-25.,-0.5}; \r
   Double_t maxEventMatrix[2]={25.,149.5}; \r
 \r
-  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fGenEventMatrix = new THnSparseF("fGenEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fGenEventMatrix->SetBinEdges(0,binsZv);\r
   fGenEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fGenEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fGenEventMatrix->Sumw2();\r
   \r
-  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fGenSDEventMatrix = new THnSparseF("fGenSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fGenSDEventMatrix->SetBinEdges(0,binsZv);\r
   fGenSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fGenSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fGenSDEventMatrix->Sumw2();\r
   \r
-  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fGenDDEventMatrix = new THnSparseF("fGenDDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fGenDDEventMatrix->SetBinEdges(0,binsZv);\r
   fGenDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenDDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fGenDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fGenDDEventMatrix->Sumw2();\r
   \r
-  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fGenNDEventMatrix = new THnSparseF("fGenNDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fGenNDEventMatrix->SetBinEdges(0,binsZv);\r
   fGenNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fGenNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fGenNDEventMatrix->Sumw2();\r
 \r
-  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fGenNSDEventMatrix = new THnSparseF("fGenNSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fGenNSDEventMatrix->SetBinEdges(0,binsZv);\r
   fGenNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fGenNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fGenNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fGenNSDEventMatrix->Sumw2();\r
 \r
   //\r
-  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fTriggerEventMatrix = new THnSparseF("fTriggerEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fTriggerEventMatrix->SetBinEdges(0,binsZv);\r
   fTriggerEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fTriggerEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fTriggerEventMatrix->Sumw2();\r
 \r
-  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fTriggerSDEventMatrix = new THnSparseF("fTriggerSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fTriggerSDEventMatrix->SetBinEdges(0,binsZv);\r
   fTriggerSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fTriggerSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fTriggerSDEventMatrix->Sumw2();\r
   \r
-  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fTriggerDDEventMatrix = new THnSparseF("fTriggerDDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fTriggerDDEventMatrix->SetBinEdges(0,binsZv);\r
   fTriggerDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fTriggerDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fTriggerDDEventMatrix->Sumw2();\r
   \r
-  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fTriggerNDEventMatrix = new THnSparseF("fTriggerNDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fTriggerNDEventMatrix->SetBinEdges(0,binsZv);\r
   fTriggerNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fTriggerNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fTriggerNDEventMatrix->Sumw2();\r
  \r
-  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fTriggerNSDEventMatrix = new THnSparseF("fTriggerNSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fTriggerNSDEventMatrix->SetBinEdges(0,binsZv);\r
   fTriggerNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fTriggerNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fTriggerNSDEventMatrix->Sumw2();\r
  \r
   //\r
-  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fRecEventMatrix = new THnSparseF("fRecEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fRecEventMatrix->SetBinEdges(0,binsZv);\r
   fRecEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fRecEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fRecEventMatrix->Sumw2();\r
 \r
-  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fRecSDEventMatrix = new THnSparseF("fRecSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fRecSDEventMatrix->SetBinEdges(0,binsZv);\r
   fRecSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fRecSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fRecSDEventMatrix->Sumw2();\r
   \r
-  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fRecDDEventMatrix = new THnSparseF("fRecDDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fRecDDEventMatrix->SetBinEdges(0,binsZv);\r
   fRecDDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecDDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fRecDDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fRecDDEventMatrix->Sumw2();\r
   \r
-  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fRecNDEventMatrix = new THnSparseF("fRecNDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fRecNDEventMatrix->SetBinEdges(0,binsZv);\r
   fRecNDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fRecNDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fRecNDEventMatrix->Sumw2();\r
  \r
-  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:mult",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
+  fRecNSDEventMatrix = new THnSparseF("fRecNSDEventMatrix","mcZv:multMB",2,binsEventMatrix,minEventMatrix,maxEventMatrix);\r
   fRecNSDEventMatrix->SetBinEdges(0,binsZv);\r
   fRecNSDEventMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
-  fRecNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity");\r
+  fRecNSDEventMatrix->GetAxis(1)->SetTitle("multiplicity MB");\r
   fRecNSDEventMatrix->Sumw2();\r
 \r
   // \r
@@ -573,6 +586,15 @@ void AlidNdPtAnalysis::Init(){
   //\r
   // tracks correction matrices\r
   //\r
+  fGenTrackMatrix = new THnSparseF("fGenTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
+  fGenTrackMatrix->SetBinEdges(0,binsZv);\r
+  fGenTrackMatrix->SetBinEdges(1,binsPt);\r
+  fGenTrackMatrix->SetBinEdges(2,binsEta);\r
+  fGenTrackMatrix->GetAxis(0)->SetTitle("mcZv (cm)");\r
+  fGenTrackMatrix->GetAxis(1)->SetTitle("mcPt (GeV/c)");\r
+  fGenTrackMatrix->GetAxis(2)->SetTitle("mcEta");\r
+  fGenTrackMatrix->Sumw2();\r
+\r
   fGenPrimTrackMatrix = new THnSparseF("fGenPrimTrackMatrix","mcZv:mcPt:mcEta",3,binsTrackMatrix);\r
   fGenPrimTrackMatrix->SetBinEdges(0,binsZv);\r
   fGenPrimTrackMatrix->SetBinEdges(1,binsPt);\r
@@ -645,28 +667,30 @@ void AlidNdPtAnalysis::Init(){
   fRecEventHist1->Sumw2();\r
 \r
   //\r
-  Int_t binsRecEventHist2[2]={zvNbins,150};\r
-  Double_t minRecEventHist2[2]={-25.,-0.5}; \r
-  Double_t maxRecEventHist2[2]={25.,149.5}; \r
+  Int_t binsRecEventHist2[3]={zvNbins,150,150};\r
+  Double_t minRecEventHist2[3]={-25.,-0.5,-0.5}; \r
+  Double_t maxRecEventHist2[3]={25.,149.5,149.5}; \r
   \r
-  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB",2,binsRecEventHist2,minRecEventHist2,maxRecEventHist2);\r
+  fRecEventHist2 = new THnSparseF("fRecEventHist2","Zv:multMB:mult",3,binsRecEventHist2,minRecEventHist2,maxRecEventHist2);\r
   fRecEventHist2->SetBinEdges(0,binsZv);\r
   fRecEventHist2->GetAxis(0)->SetTitle("Zv (cm)");\r
-  fRecEventHist2->GetAxis(1)->SetTitle("multMB");\r
+  fRecEventHist2->GetAxis(1)->SetTitle("multiplicity MB");\r
+  fRecEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
   fRecEventHist2->Sumw2();\r
 \r
   //\r
   Double_t kFact = 1.0;\r
-  if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx) kFact = 0.05; \r
+  if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
+     GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) kFact = 0.03; \r
 \r
   Int_t binsRecMCEventHist1[3]={100,100,100};\r
   Double_t minRecMCEventHist1[3]={-10.0*kFact,-10.0*kFact,-10.0*kFact}; \r
   Double_t maxRecMCEventHist1[3]={10.0*kFact,10.0*kFact,10.0*kFact}; \r
    \r
-  fRecMCEventHist1 = new THnSparseF("fRecMCEventHist1","mcXv-Xv:mcYv-Yv:mcZv-Zv",3,binsRecMCEventHist1,minRecMCEventHist1,maxRecMCEventHist1);\r
-  fRecMCEventHist1->GetAxis(0)->SetTitle("mcXv-Xv (cm)");\r
-  fRecMCEventHist1->GetAxis(1)->SetTitle("mcYv-Yv (cm)");\r
-  fRecMCEventHist1->GetAxis(2)->SetTitle("mcZv-Zv (cm)");\r
+  fRecMCEventHist1 = new THnSparseF("fRecMCEventHist1","Xv-mcXv:Yv-mcYv:Zv-mcZv",3,binsRecMCEventHist1,minRecMCEventHist1,maxRecMCEventHist1);\r
+  fRecMCEventHist1->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
+  fRecMCEventHist1->GetAxis(1)->SetTitle("Yv-mcYv (cm)");\r
+  fRecMCEventHist1->GetAxis(2)->SetTitle("Zv-mcZv (cm)");\r
   fRecMCEventHist1->Sumw2();\r
 \r
   //\r
@@ -674,17 +698,17 @@ void AlidNdPtAnalysis::Init(){
   Double_t minRecMCEventHist2[3]={-10.0*kFact,-10.0*kFact,0.0}; \r
   Double_t maxRecMCEventHist2[3]={10.0*kFact,10.0*kFact,149.50}; \r
 \r
-  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","mcXv-Xv:mcZv-Zv:Mult",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
-  fRecMCEventHist2->GetAxis(0)->SetTitle("mcXv-Xv (cm)");\r
-  fRecMCEventHist2->GetAxis(1)->SetTitle("mcZv-Zv (cm)");\r
-  fRecMCEventHist2->GetAxis(2)->SetTitle("Mult");\r
+  fRecMCEventHist2 = new THnSparseF("fRecMCEventHist2","Xv-mcXv:Zv-mcZv:mult",3,binsRecMCEventHist2,minRecMCEventHist2,maxRecMCEventHist2);\r
+  fRecMCEventHist2->GetAxis(0)->SetTitle("Xv-mcXv (cm)");\r
+  fRecMCEventHist2->GetAxis(1)->SetTitle("Zv-mcZv (cm)");\r
+  fRecMCEventHist2->GetAxis(2)->SetTitle("multiplicity");\r
   fRecMCEventHist2->Sumw2();\r
 \r
   Int_t binsRecMCEventHist3[2]={150,5};\r
   Double_t minRecMCEventHist3[2]={-0.5,0.0}; \r
   Double_t maxRecMCEventHist3[2]={149.50,5.0}; \r
-  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","Mult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
-  fRecMCEventHist3->GetAxis(0)->SetTitle("Mult");\r
+  fRecMCEventHist3 = new THnSparseF("fRecMCEventHist3","mult:EventType (ND, DD, SD)",2,binsRecMCEventHist3,minRecMCEventHist3,maxRecMCEventHist3);\r
+  fRecMCEventHist3->GetAxis(0)->SetTitle("multiplicity");\r
   fRecMCEventHist3->GetAxis(1)->SetTitle("EventType");\r
   fRecMCEventHist3->Sumw2();\r
 \r
@@ -753,9 +777,9 @@ void AlidNdPtAnalysis::Init(){
   fRecTrackHist1[i] = new THnSparseF(name,title,3,binsRecTrackHist1,minRecTrackHist1,maxRecTrackHist1);\r
   fRecTrackHist1[i]->SetBinEdges(0,binsPt);\r
   fRecTrackHist1[i]->SetBinEdges(1,binsEta);\r
-  fRecTrackHist1[i]->GetAxis(0)->SetTitle("Pt (GeV/c)");\r
-  fRecTrackHist1[i]->GetAxis(1)->SetTitle("Eta");\r
-  fRecTrackHist1[i]->GetAxis(2)->SetTitle("Phi (rad)");\r
+  fRecTrackHist1[i]->GetAxis(0)->SetTitle("p_{T} (GeV/c)");\r
+  fRecTrackHist1[i]->GetAxis(1)->SetTitle("#eta");\r
+  fRecTrackHist1[i]->GetAxis(2)->SetTitle("#phi (rad)");\r
   fRecTrackHist1[i]->Sumw2();\r
 \r
   // \r
@@ -796,6 +820,21 @@ void AlidNdPtAnalysis::Init(){
   fMCMultRecTrackHist1->GetAxis(1)->SetTitle("mcEta");\r
   fMCMultRecTrackHist1->GetAxis(2)->SetTitle("pid");\r
 \r
+  //nClust:chi2PerClust:pt:eta:phi\r
+  Int_t binsRecTrackHist2[5]={160,100,ptNbins,etaNbins,90};\r
+  Double_t minRecTrackHist2[5]={0., 0., 0, -1.5, 0.};\r
+  Double_t maxRecRecTrackHist2[5]={160.,10., 16, 1.5, 2.*TMath::Pi()};\r
+\r
+  fRecTrackHist2 = new THnSparseF("fRecTrackHist2","nClust:chi2PerClust:pt:eta:phi",5,binsRecTrackHist2,minRecTrackHist2,maxRecRecTrackHist2);\r
+  fRecTrackHist2->SetBinEdges(2,binsPt);\r
+  fRecTrackHist2->SetBinEdges(3,binsEta);\r
+  fRecTrackHist2->GetAxis(0)->SetTitle("nClust");\r
+  fRecTrackHist2->GetAxis(1)->SetTitle("chi2PerClust");\r
+  fRecTrackHist2->GetAxis(2)->SetTitle("p_{T} (GeV/c)");\r
+  fRecTrackHist2->GetAxis(3)->SetTitle("#eta");\r
+  fRecTrackHist2->GetAxis(4)->SetTitle("#phi (rad)");\r
+  fRecTrackHist2->Sumw2();\r
+\r
   // init folder\r
   fAnalysisFolder = CreateFolder("folderdNdPt","Analysis dNdPt Folder");\r
 }\r
@@ -810,12 +849,8 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     AliDebug(AliLog::kError, "esdEvent not available");\r
     return;\r
   }\r
-  // trigger definition\r
-  Bool_t isEventTriggered = AlidNdPtHelper::IsEventTriggered(esdEvent->GetTriggerMask(), GetTrigger());\r
-  //if(!isEventTriggered) printf("no MB1 trigger ... \n");\r
-  //\r
 \r
-  // cuts\r
+  // get selection cuts\r
   AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
   AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
   AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
@@ -824,14 +859,35 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
     AliDebug(AliLog::kError, "cuts not available");\r
     return;\r
   }\r
-  //if(!evtCuts->IsTriggerRequired()) isEventTriggered = kTRUE;\r
+\r
+  // get physics trigger selection \r
+  AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+  if(!trigSel) {\r
+    AliDebug(AliLog::kError, "cannot get trigSel");\r
+    return;\r
+  }\r
+\r
+  // trigger selection\r
+  Bool_t isEventTriggered = kTRUE;\r
+  if(evtCuts->IsTriggerRequired())  {\r
+    if(IsUseMCInfo()) { \r
+      //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+      //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+      trigSel->SetAnalyzeMC();\r
+      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+    }\r
+    else {\r
+      //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+      isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
+    }\r
+  }\r
 \r
   // use MC information\r
   AliHeader* header = 0;\r
   AliGenEventHeader* genHeader = 0;\r
   AliStack* stack = 0;\r
   TArrayF vtxMC(3);\r
-  AlidNdPtHelper::MCProcessType evtType = AlidNdPtHelper::kInvalidProcess;\r
+  AliPWG0Helper::MCProcessType evtType = AliPWG0Helper::kInvalidProcess;\r
 \r
   Int_t multMCTrueTracks = 0;\r
   if(IsUseMCInfo())\r
@@ -854,7 +910,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       return;\r
     }\r
     // get event type (ND=0x1, DD=0x2, SD=0x4)\r
-    evtType = AlidNdPtHelper::GetEventProcessType(header);\r
+    evtType = AliPWG0Helper::GetEventProcessType(header);\r
     AliDebug(AliLog::kDebug+1, Form("Found process type %d", evtType));\r
 \r
     // get MC vertex\r
@@ -879,29 +935,32 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
   Bool_t isRecVertex = kFALSE;\r
   if(evtCuts->IsRecVertexRequired()) \r
   {\r
-    vtxESD = AlidNdPtHelper::GetVertex(esdEvent, evtCuts,  accCuts, esdTrackCuts, GetAnalysisMode(), kFALSE, kTRUE, kTRUE);\r
-    isRecVertex = AlidNdPtHelper::TestVertex(vtxESD, GetAnalysisMode(), kFALSE); // should be moved to AcceptEvent\r
+    Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex();\r
+    Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint();\r
+    vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
+    isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, GetAnalysisMode(), kFALSE);\r
   }\r
+\r
   if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
     vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
     isRecVertex = kTRUE;\r
   }\r
+\r
   Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
-  //printf("isEventOK %d \n",isEventOK);\r
+  //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
+  //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
 \r
-  // MB bias tracks\r
+  // vertex contributors\r
   Int_t multMBTracks = 0; \r
-  if(GetAnalysisMode() == AlidNdPtHelper::kTPC || GetAnalysisMode() == AlidNdPtHelper::kMCPion ||  \r
-     GetAnalysisMode() == AlidNdPtHelper::kMCKaon ||  GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
-     GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() ==AlidNdPtHelper::kMinus) {  \r
-\r
+  if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
+  {  \r
      multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
   } \r
-  else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kMCPion || \r
-          GetAnalysisMode() == AlidNdPtHelper::kMCKaon || GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
-         GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() == AlidNdPtHelper::kMinus) {\r
-\r
-           multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+  else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate) \r
+  {\r
+     //multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+     if(vtxESD->GetStatus())\r
+       multMBTracks = vtxESD->GetNContributors();\r
   } \r
   else {\r
     AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
@@ -916,10 +975,13 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
   if(isEventOK && isEventTriggered)\r
   {\r
     // get all charged tracks\r
-    allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,vtxESD,GetAnalysisMode());\r
+    //allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,vtxESD,GetAnalysisMode());\r
+    allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode());\r
     if(!allChargedTracks) return;\r
 \r
     Int_t entries = allChargedTracks->GetEntries();\r
+    //printf("entries %d \n",entries);\r
+\r
     labelsAll = new Int_t[entries];\r
     labelsAcc = new Int_t[entries];\r
     labelsRec = new Int_t[entries];\r
@@ -928,22 +990,54 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
       AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
       if(!track) continue;\r
       if(track->Charge()==0) continue;\r
-        \r
-       FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
-       labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
-       multAll++;\r
-\r
-       if(accCuts->AcceptTrack(track)) {\r
-         FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
-        labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
-        multAcc++;\r
-\r
-         if(esdTrackCuts->AcceptTrack(track)) {\r
-           FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
-          labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
-          multRec++;\r
+\r
+      /*\r
+      // cosmics analysis\r
+      if( GetParticleMode()==AlidNdPtHelper::kCosmics  && \r
+          AlidNdPtHelper::IsCosmicTrack(allChargedTracks, track, i, accCuts, esdTrackCuts)==kFALSE ) \r
+        continue;\r
+      */\r
+\r
+      // only postive charged \r
+      if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
+        continue;\r
+      \r
+      // only negative charged \r
+      if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
+        continue;\r
+\r
+      FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
+      labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
+      multAll++;\r
+\r
+       //if(accCuts->AcceptTrack(track)) {\r
+         //FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
+        //labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
+        //multAcc++;\r
+\r
+         if(esdTrackCuts->AcceptTrack(track)) \r
+        {\r
+          if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) {\r
+            // update track parameters\r
+             AliExternalTrackParam cParam;\r
+            track->RelateToVertexTPC(esdEvent->GetPrimaryVertexSPD(),esdEvent->GetMagneticField(),kVeryBig,&cParam);\r
+            track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
+\r
+             if(accCuts->AcceptTrack(track)) {\r
+               FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+              labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+              multRec++;\r
+            }  \r
+          }\r
+           else {\r
+             if(accCuts->AcceptTrack(track)) {\r
+               FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+              labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+              multRec++;\r
+            }\r
+          }\r
          }\r
-       }\r
+       //}\r
      } \r
      // fill track multiplicity histograms\r
      FillHistograms(allChargedTracks,labelsAll,multAll,labelsAcc,multAcc,labelsRec,multRec);\r
@@ -951,7 +1045,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
      Double_t vRecEventHist1[3] = {vtxESD->GetXv(),vtxESD->GetYv(),vtxESD->GetZv()};\r
      fRecEventHist1->Fill(vRecEventHist1);\r
 \r
-     Double_t vRecEventHist2[2] = {vtxESD->GetZv(),multMBTracks};\r
+     Double_t vRecEventHist2[3] = {vtxESD->GetZv(),multMBTracks,multRec};\r
      fRecEventHist2->Fill(vRecEventHist2);\r
    } \r
 \r
@@ -977,28 +1071,28 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
      if(isEventOK && isEventTriggered) fRecEventMatrix->Fill(vEventMatrix);\r
 \r
      // single diffractive\r
-     if(evtType == AlidNdPtHelper::kSD) {\r
+     if(evtType == AliPWG0Helper::kSD) {\r
        fGenSDEventMatrix->Fill(vEventMatrix); \r
        if(isEventTriggered) fTriggerSDEventMatrix->Fill(vEventMatrix);\r
        if(isEventOK && isEventTriggered) fRecSDEventMatrix->Fill(vEventMatrix);\r
      }\r
 \r
      // double diffractive\r
-     if(evtType == AlidNdPtHelper::kDD) {\r
+     if(evtType == AliPWG0Helper::kDD) {\r
        fGenDDEventMatrix->Fill(vEventMatrix); \r
        if(isEventTriggered) fTriggerDDEventMatrix->Fill(vEventMatrix);\r
        if(isEventOK && isEventTriggered)  fRecDDEventMatrix->Fill(vEventMatrix);\r
      }\r
 \r
      // non diffractive\r
-     if(evtType == AlidNdPtHelper::kND) {\r
+     if(evtType == AliPWG0Helper::kND) {\r
        fGenNDEventMatrix->Fill(vEventMatrix); \r
        if(isEventTriggered) fTriggerNDEventMatrix->Fill(vEventMatrix);\r
        if(isEventOK && isEventTriggered) fRecNDEventMatrix->Fill(vEventMatrix);\r
      }\r
 \r
      // non single diffractive\r
-     if(evtType != AlidNdPtHelper::kSD) {\r
+     if(evtType != AliPWG0Helper::kSD) {\r
        fGenNSDEventMatrix->Fill(vEventMatrix); \r
        if(isEventTriggered) fTriggerNSDEventMatrix->Fill(vEventMatrix);\r
        if(isEventOK && isEventTriggered) fRecNSDEventMatrix->Fill(vEventMatrix);\r
@@ -1019,11 +1113,11 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
         continue;\r
 \r
        // only postive charged \r
-       if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+       if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
         continue;\r
        \r
        // only negative charged \r
-       if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+       if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
        continue;\r
       \r
        // physical primary\r
@@ -1036,16 +1130,16 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          Double_t vTrackEventMatrix[3] = {vtxMC[2], particle->Pt(), particle->Eta()}; \r
          fGenTrackEventMatrix->Fill(vTrackEventMatrix);\r
 \r
-         if(evtType == AlidNdPtHelper::kSD) {\r
+         if(evtType == AliPWG0Helper::kSD) {\r
            fGenTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kDD) {\r
+         if(evtType == AliPWG0Helper::kDD) {\r
            fGenTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kND) {\r
+         if(evtType == AliPWG0Helper::kND) {\r
            fGenTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType != AlidNdPtHelper::kSD) {\r
+         if(evtType != AliPWG0Helper::kSD) {\r
            fGenTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
 \r
@@ -1053,16 +1147,16 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          if(!isEventTriggered) continue;  \r
 \r
          fTriggerTrackEventMatrix->Fill(vTrackEventMatrix);\r
-         if(evtType == AlidNdPtHelper::kSD) {\r
+         if(evtType == AliPWG0Helper::kSD) {\r
            fTriggerTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kDD) {\r
+         if(evtType == AliPWG0Helper::kDD) {\r
            fTriggerTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kND) {\r
+         if(evtType == AliPWG0Helper::kND) {\r
            fTriggerTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType != AlidNdPtHelper::kSD) {\r
+         if(evtType != AliPWG0Helper::kSD) {\r
            fTriggerTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
 \r
@@ -1070,16 +1164,16 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
         if(!isEventOK) continue;  \r
 \r
          fRecTrackEventMatrix->Fill(vTrackEventMatrix);\r
-         if(evtType == AlidNdPtHelper::kSD) {\r
+         if(evtType == AliPWG0Helper::kSD) {\r
            fRecTrackSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kDD) {\r
+         if(evtType == AliPWG0Helper::kDD) {\r
            fRecTrackDDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType == AlidNdPtHelper::kND) {\r
+         if(evtType == AliPWG0Helper::kND) {\r
            fRecTrackNDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
-         if(evtType != AlidNdPtHelper::kSD) {\r
+         if(evtType != AliPWG0Helper::kSD) {\r
            fRecTrackNSDEventMatrix->Fill(vTrackEventMatrix);\r
         }\r
        }\r
@@ -1093,10 +1187,10 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
 \r
        // fill MC and rec event control histograms\r
        if(fHistogramsOn) {\r
-         Double_t vRecMCEventHist1[3] = {vtxMC[0]-vtxESD->GetXv(),vtxMC[1]-vtxESD->GetYv(),vtxMC[2]-vtxESD->GetZv()};\r
+         Double_t vRecMCEventHist1[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetYv()-vtxMC[1],vtxESD->GetZv()-vtxMC[2]};\r
          fRecMCEventHist1->Fill(vRecMCEventHist1);\r
 \r
-         Double_t vRecMCEventHist2[3] = {vtxMC[0]-vtxESD->GetXv(),vtxMC[2]-vtxESD->GetZv(),multMBTracks};\r
+         Double_t vRecMCEventHist2[3] = {vtxESD->GetXv()-vtxMC[0],vtxESD->GetZv()-vtxMC[2],multMBTracks};\r
          fRecMCEventHist2->Fill(vRecMCEventHist2);\r
 \r
          Double_t vRecMCEventHist3[2] = {multRec,evtType};\r
@@ -1112,17 +1206,24 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          if (!particle)\r
          continue;\r
 \r
+         Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; \r
+\r
+        // all genertated primaries including neutral\r
+         if( iMc < stack->GetNprimary() ) {\r
+           //fGenTrackMatrix->Fill(vTrackMatrix);\r
+        }\r
+\r
          // only charged particles\r
          Double_t charge = particle->GetPDG()->Charge()/3.;\r
          if (charge == 0.0)\r
          continue;\r
 \r
          // only postive charged \r
-         if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+         if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
         continue;\r
        \r
          // only negative charged \r
-         if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+         if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
         continue;\r
       \r
          // physical primary\r
@@ -1131,9 +1232,8 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
          // check accepted\r
          if(accCuts->AcceptTrack(particle)) \r
         {\r
-           Double_t vTrackMatrix[3] = {vtxMC[2],particle->Pt(),particle->Eta()}; \r
-           //if(prim) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
-           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
+\r
+           if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
 \r
           // fill control histograms\r
            if(fHistogramsOn) \r
@@ -1166,7 +1266,7 @@ void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mc
              if(iMc == labelsRec[iRec]) \r
             {\r
                fRecTrackMatrix->Fill(vTrackMatrix);\r
-               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
+               if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
                if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
 \r
               // fill control histograms\r
@@ -1247,10 +1347,21 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
   Float_t dca[2], bCov[3];\r
   esdTrack->GetImpactParameters(dca,bCov);\r
 \r
+  Int_t nClust = esdTrack->GetTPCclusters(0);\r
+  Float_t chi2PerCluster = 0.;\r
+  if(nClust>0.) chi2PerCluster = esdTrack->GetTPCchi2()/Float_t(nClust);\r
+\r
 \r
   // fill histograms\r
   Double_t values[3] = {pt,eta,phi};     \r
   fRecTrackHist1[trackObj]->Fill(values);\r
+\r
+  Double_t values1[5] = {nClust,chi2PerCluster,pt,eta,phi};      \r
+  if(trackObj == AlidNdPtHelper::kRecTracks)  \r
+  {\r
+    if(fHistogramsOn)\r
+      fRecTrackHist2->Fill(values1);\r
+  }\r
  \r
   //\r
   // Fill rec vs MC information\r
@@ -1283,6 +1394,7 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
   //Float_t gphi = particle->Phi();\r
 \r
   Double_t dpt=0;\r
+  //printf("pt %f, gpt %f \n",pt,gpt);\r
   if(gpt) dpt = (pt-gpt)/gpt;\r
   Double_t deta = (eta-geta);\r
  \r
@@ -1294,7 +1406,6 @@ void AlidNdPtAnalysis::FillHistograms(AliESDtrack *const esdTrack, AliStack *con
 \r
     Double_t vRecMCTrackHist1[4]={gpt,geta,dpt,deta};\r
     fRecMCTrackHist1->Fill(vRecMCTrackHist1);\r
-\r
   }\r
 }\r
 \r
@@ -1409,6 +1520,7 @@ Long64_t AlidNdPtAnalysis::Merge(TCollection* list)
     fRecTrackNSDEventMatrix->Add(entry->fRecTrackNSDEventMatrix);\r
 \r
     //\r
+    fGenTrackMatrix->Add(entry->fGenTrackMatrix);\r
     fGenPrimTrackMatrix->Add(entry->fGenPrimTrackMatrix);\r
     fRecPrimTrackMatrix->Add(entry->fRecPrimTrackMatrix);\r
     //\r
@@ -1438,6 +1550,7 @@ Long64_t AlidNdPtAnalysis::Merge(TCollection* list)
     }\r
     fRecMCTrackHist1->Add(entry->fRecMCTrackHist1);\r
     fMCMultRecTrackHist1->Add(entry->fMCMultRecTrackHist1);\r
+    fRecTrackHist2->Add(entry->fRecTrackHist2);\r
 \r
   count++;\r
   }\r
@@ -1452,35 +1565,169 @@ void AlidNdPtAnalysis::Analyse()
   //\r
   TH1::AddDirectory(kFALSE);\r
   TH1 *h=0, *h1=0, *h2=0, *h2c = 0; \r
-  TH2D *hgen2D=0;\r
   THnSparse *hs=0; \r
   TH2 *h2D=0; \r
-  TH1 *h1D=0; \r
 \r
   char name[256];\r
   TObjArray *aFolderObj = new TObjArray;\r
\r
+  //\r
+  // Reconstructed event vertex\r
+  //\r
+  h = fRecEventHist1->Projection(0);\r
+  h->SetName("Xv");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecEventHist1->Projection(1);\r
+  h->SetName("Yv");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecEventHist1->Projection(2);\r
+  h->SetName("Zv");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
-  // get cuts\r
+  // multiplicity\r
   //\r
-  AlidNdPtEventCuts *evtCuts = GetEventCuts(); \r
-  AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); \r
-  AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); \r
+  h = fRecEventHist2->Projection(1);\r
+  h->SetName("multMB");\r
+  aFolderObj->Add(h);\r
 \r
-  if(!evtCuts || !accCuts || !esdTrackCuts) {\r
-    Error("AlidNdPtCutAnalysis::Analyse()", "cuts not available");\r
-    return;\r
-  }\r
+  h = fRecEventHist2->Projection(2);\r
+  h->SetName("multiplicity");\r
+  aFolderObj->Add(h);\r
+\r
+  h2D = fRecEventHist2->Projection(0,1); \r
+  h2D->SetName("Zv_vs_multiplicity_MB");\r
+  aFolderObj->Add(h2D);\r
+\r
+  //\r
+  // reconstructed pt histograms\r
+  //\r
+  h = fRecTrackHist1[0]->Projection(0);\r
+  h->Scale(1.,"width");\r
+  h->SetName("pt_all_ch");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[1]->Projection(0);\r
+  h->Scale(1.,"width");\r
+  h->SetName("pt_acc");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[2]->Projection(0);\r
+  h->Scale(1.,"width");\r
+  h->SetName("pt_rec");\r
+  aFolderObj->Add(h);\r
+\r
+  //\r
+  // reconstructed eta histograms\r
+  //\r
+  h = fRecTrackHist1[0]->Projection(1);\r
+  h->SetName("eta_all_ch");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[1]->Projection(1);\r
+  h->SetName("eta_acc");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[2]->Projection(1);\r
+  h->SetName("eta_rec");\r
+  aFolderObj->Add(h);\r
+\r
+  //\r
+  // reconstructed phi histograms\r
+  //\r
+  h = fRecTrackHist1[0]->Projection(2);\r
+  h->SetName("phi_all_ch");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[1]->Projection(2);\r
+  h->SetName("phi_acc");\r
+  aFolderObj->Add(h);\r
+\r
+  h = fRecTrackHist1[2]->Projection(2);\r
+  h->SetName("phi_rec");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
-  // set min and max values\r
+  // reconstructed eta:pt histograms\r
   //\r
-  Double_t minZv = evtCuts->GetMinZv();\r
-  Double_t maxZv = evtCuts->GetMaxZv()-0.00001;\r
-  Double_t minPt = accCuts->GetMinPt();\r
-  Double_t maxPt = accCuts->GetMaxPt();\r
-  Double_t minEta = accCuts->GetMinEta();\r
-  Double_t maxEta = accCuts->GetMaxEta()-0.00001;\r
+  h2D = fRecTrackHist1[0]->Projection(1,0);\r
+  h2D->SetName("pt_eta_all_ch");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[1]->Projection(1,0);\r
+  h2D->SetName("pt_eta_acc");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[2]->Projection(1,0);\r
+  h2D->SetName("pt_eta_rec");\r
+  aFolderObj->Add(h2D);\r
+\r
+  //\r
+  // reconstructed phi:pt histograms\r
+  //\r
+  h2D = fRecTrackHist1[0]->Projection(2,0);\r
+  h2D->SetName("pt_phi_all_ch");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[1]->Projection(2,0);\r
+  h2D->SetName("pt_phi_acc");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[2]->Projection(2,0);\r
+  h2D->SetName("pt_phi_rec");\r
+  aFolderObj->Add(h2D);\r
+\r
+  //\r
+  // reconstructed phi:eta histograms\r
+  //\r
+  h2D = fRecTrackHist1[0]->Projection(2,1);\r
+  h2D->SetName("eta_phi_all_ch");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[1]->Projection(2,1);\r
+  h2D->SetName("eta_phi_acc");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecTrackHist1[2]->Projection(2,1);\r
+  h2D->SetName("eta_phi_rec");\r
+  aFolderObj->Add(h2D);\r
+\r
+  //\r
+  // reconstructed nClust, chi2 vs pt, eta, phi\r
+  //\r
+  if(fHistogramsOn) {\r
+\r
+    h2D = fRecTrackHist2->Projection(0,1);\r
+    h2D->SetName("nClust_chi2_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(0,2);\r
+    h2D->SetName("nClust_pt_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(0,3);\r
+    h2D->SetName("nClust_eta_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(0,4);\r
+    h2D->SetName("nClust_phi_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(1,2);\r
+    h2D->SetName("chi2_pt_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(1,3);\r
+    h2D->SetName("chi2_eta_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+    h2D = fRecTrackHist2->Projection(1,4);\r
+    h2D->SetName("chi2_phi_rec");\r
+    aFolderObj->Add(h2D);\r
+\r
+  }\r
 \r
   //\r
   // calculate corrections for empty events\r
@@ -1494,6 +1741,22 @@ void AlidNdPtAnalysis::Analyse()
   if( h->Integral() ) h->Scale(1./h->Integral());\r
   h->SetName("zv_distribution_norm");\r
   aFolderObj->Add(h);\r
\r
+  //\r
+  // MC available\r
+  //\r
+  if(IsUseMCInfo()) {\r
+\r
+  //\r
+  // Event vertex resolution\r
+  //\r
+  h2D = fRecMCEventHist2->Projection(0,2);\r
+  h2D->SetName("DeltaXv_vs_mult");\r
+  aFolderObj->Add(h2D);\r
+\r
+  h2D = fRecMCEventHist2->Projection(1,2);\r
+  h2D->SetName("DeltaZv_vs_mult");\r
+  aFolderObj->Add(h2D);\r
 \r
   //\r
   // normalised zv to get trigger/trigger+vertex event differences\r
@@ -1501,12 +1764,12 @@ void AlidNdPtAnalysis::Analyse()
   //\r
   fTriggerEventMatrix->GetAxis(1)->SetRangeUser(0.,0.);\r
   h = fTriggerEventMatrix->Projection(0);\r
-  hgen2D = fTriggerEventMatrix->Projection(0,1);\r
-  if(hgen2D->Integral()) h->Scale(1./hgen2D->Integral());\r
+  h2D = fTriggerEventMatrix->Projection(0,1);\r
+  if(h2D->Integral()) h->Scale(1./h2D->Integral());\r
 \r
   h1 = fRecEventMatrix->Projection(0);\r
-  hgen2D = fRecEventMatrix->Projection(0,1);\r
-  if(hgen2D->Integral()) h1->Scale(1./hgen2D->Integral());\r
+  h2D = fRecEventMatrix->Projection(0,1);\r
+  if(h2D->Integral()) h1->Scale(1./h2D->Integral());\r
 \r
   h->Divide(h1);\r
   h->SetName("zv_empty_events_norm");\r
@@ -1529,14 +1792,14 @@ void AlidNdPtAnalysis::Analyse()
   //\r
   // trigger efficiency for INEL\r
   //\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fGenEventMatrix->Projection(0),"zv_trig_INEL_eff_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fGenEventMatrix->Projection(0),"zv_trig_INEL_eff_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // trigger efficiency for NSD\r
   //\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerNSDEventMatrix->Projection(0),fGenNSDEventMatrix->Projection(0),"zv_trig_NSD_eff_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerNSDEventMatrix->Projection(0),fGenNSDEventMatrix->Projection(0),"zv_trig_NSD_eff_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // trigger bias correction (MB to ND)\r
@@ -1544,17 +1807,13 @@ void AlidNdPtAnalysis::Analyse()
   hs = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoND_corr_matrix");\r
   aFolderObj->Add(hs);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoND_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoND_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fGenNDEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fTriggerEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoND_corr_matrix");\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenNDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoND_corr_matrix");\r
 \r
-  aFolderObj->Add(h1D);\r
-  fGenNDEventMatrix->GetAxis(0)->SetRange(1,fGenNDEventMatrix->GetAxis(0)->GetNbins());\r
-  fTriggerEventMatrix->GetAxis(0)->SetRange(1,fTriggerEventMatrix->GetAxis(0)->GetNbins());\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // trigger bias correction (MB to NSD)\r
@@ -1565,17 +1824,13 @@ void AlidNdPtAnalysis::Analyse()
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoNSD_corr_matrix_2D");\r
   aFolderObj->Add(h2D);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoNSD_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoNSD_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fGenNSDEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fTriggerEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoNSD_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenNSDEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoNSD_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fGenNSDEventMatrix->GetAxis(0)->SetRange(1,fGenNSDEventMatrix->GetAxis(0)->GetNbins());\r
-  fTriggerEventMatrix->GetAxis(0)->SetRange(1,fTriggerEventMatrix->GetAxis(0)->GetNbins());\r
 \r
   //\r
   // trigger bias correction (MB to INEL)\r
@@ -1583,20 +1838,16 @@ void AlidNdPtAnalysis::Analyse()
   hs = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix,fTriggerEventMatrix,"zv_mult_trig_MBtoInel_corr_matrix");\r
   aFolderObj->Add(hs);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoInel_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0),fTriggerEventMatrix->Projection(0),"zv_trig_MBtoInel_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(0,1),fTriggerEventMatrix->Projection(0,1),"zv_mult_trig_MBtoInel_corr_matrix_2D");\r
   aFolderObj->Add(h2D);\r
 \r
-  fGenEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fTriggerEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoInel_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenEventMatrix->Projection(1),fTriggerEventMatrix->Projection(1),"mult_trig_MBtoInel_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fGenEventMatrix->GetAxis(0)->SetRange(1,fGenEventMatrix->GetAxis(0)->GetNbins());\r
-  fTriggerEventMatrix->GetAxis(0)->SetRange(1,fTriggerEventMatrix->GetAxis(0)->GetNbins());\r
 \r
   //\r
   // event vertex reconstruction correction (MB)\r
@@ -1607,17 +1858,13 @@ void AlidNdPtAnalysis::Analyse()
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0,1),fRecEventMatrix->Projection(0,1),"zv_mult_event_corr_matrix_2D");\r
   aFolderObj->Add(h2D);\r
 \r
-  fTriggerEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fRecEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(1),fRecEventMatrix->Projection(1),"mult_event_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(1),fRecEventMatrix->Projection(1),"mult_event_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fTriggerEventMatrix->GetAxis(0)->SetRange(1,fTriggerEventMatrix->GetAxis(0)->GetNbins());\r
-  fRecEventMatrix->GetAxis(0)->SetRange(1,fRecEventMatrix->GetAxis(0)->GetNbins());\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fRecEventMatrix->Projection(0),"zv_event_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerEventMatrix->Projection(0),fRecEventMatrix->Projection(0),"zv_event_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // track-event trigger bias correction (MB to ND)\r
@@ -1667,18 +1914,9 @@ void AlidNdPtAnalysis::Analyse()
   aFolderObj->Add(h2D);\r
 \r
   // efficiency\r
-  fTriggerTrackEventMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fGenTrackEventMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fTriggerTrackEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fGenTrackEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1),fGenTrackEventMatrix->Projection(1),"pt_track_trig_MBtoInel_eff_matrix");\r
-  aFolderObj->Add(h1D);\r
 \r
-  fTriggerTrackEventMatrix->GetAxis(2)->SetRange(1,fTriggerTrackEventMatrix->GetAxis(2)->GetNbins());\r
-  fGenTrackEventMatrix->GetAxis(2)->SetRange(1,fGenTrackEventMatrix->GetAxis(2)->GetNbins());\r
-  fTriggerTrackEventMatrix->GetAxis(0)->SetRange(1,fTriggerTrackEventMatrix->GetAxis(0)->GetNbins());\r
-  fGenTrackEventMatrix->GetAxis(0)->SetRange(1,fGenTrackEventMatrix->GetAxis(0)->GetNbins());\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fTriggerTrackEventMatrix->Projection(1),fGenTrackEventMatrix->Projection(1),"pt_track_trig_MBtoInel_eff_matrix");\r
+  aFolderObj->Add(h);\r
 \r
 \r
   //\r
@@ -1697,18 +1935,10 @@ void AlidNdPtAnalysis::Analyse()
   aFolderObj->Add(h2D);\r
   \r
   // efficiency\r
-  fTriggerTrackEventMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecTrackEventMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fTriggerTrackEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fRecTrackEventMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecTrackEventMatrix->Projection(1),fTriggerTrackEventMatrix->Projection(1),"pt_track_event_eff_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecTrackEventMatrix->Projection(1),fTriggerTrackEventMatrix->Projection(1),"pt_track_event_eff_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fTriggerTrackEventMatrix->GetAxis(2)->SetRange(1,fTriggerTrackEventMatrix->GetAxis(2)->GetNbins());\r
-  fRecTrackEventMatrix->GetAxis(2)->SetRange(1,fRecTrackEventMatrix->GetAxis(2)->GetNbins());\r
-  fTriggerTrackEventMatrix->GetAxis(0)->SetRange(1,fTriggerTrackEventMatrix->GetAxis(0)->GetNbins());\r
-  fRecTrackEventMatrix->GetAxis(0)->SetRange(1,fRecTrackEventMatrix->GetAxis(0)->GetNbins());\r
 \r
   //\r
   // track rec. efficiency correction\r
@@ -1725,38 +1955,20 @@ void AlidNdPtAnalysis::Analyse()
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2,0),fRecPrimTrackMatrix->Projection(2,0),"zv_eta_track_corr_matrix");\r
   aFolderObj->Add(h2D);\r
 \r
-  fGenPrimTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecPrimTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fGenPrimTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecPrimTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
   \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(0),fRecPrimTrackMatrix->Projection(0),"zv_track_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
-\r
-  fGenPrimTrackMatrix->GetAxis(1)->SetRange(1,fGenPrimTrackMatrix->GetAxis(1)->GetNbins());\r
-  fRecPrimTrackMatrix->GetAxis(1)->SetRange(1,fRecPrimTrackMatrix->GetAxis(1)->GetNbins());\r
-  fGenPrimTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fRecPrimTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(0),fRecPrimTrackMatrix->Projection(0),"zv_track_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1),fRecPrimTrackMatrix->Projection(1),"pt_track_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(1),fRecPrimTrackMatrix->Projection(1),"pt_track_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   // efficiency\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
-  aFolderObj->Add(h1D);\r
 \r
-  fGenPrimTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecPrimTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fGenPrimTrackMatrix->GetAxis(2)->SetRange(1,fGenPrimTrackMatrix->GetAxis(2)->GetNbins());\r
-  fRecPrimTrackMatrix->GetAxis(2)->SetRange(1,fRecPrimTrackMatrix->GetAxis(2)->GetNbins());\r
-\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2),fRecPrimTrackMatrix->Projection(2),"eta_track_corr_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fGenPrimTrackMatrix->GetAxis(1)->SetRange(1,fGenPrimTrackMatrix->GetAxis(1)->GetNbins());\r
-  fRecPrimTrackMatrix->GetAxis(1)->SetRange(1,fRecPrimTrackMatrix->GetAxis(1)->GetNbins());\r
-  fGenPrimTrackMatrix->GetAxis(0)->SetRange(1,fGenPrimTrackMatrix->GetAxis(0)->GetNbins());\r
-  fRecPrimTrackMatrix->GetAxis(0)->SetRange(1,fRecPrimTrackMatrix->GetAxis(0)->GetNbins());\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fGenPrimTrackMatrix->Projection(2),fRecPrimTrackMatrix->Projection(2),"eta_track_corr_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // secondary track contamination correction\r
@@ -1774,35 +1986,15 @@ void AlidNdPtAnalysis::Analyse()
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_track_cont_matrix");\r
   aFolderObj->Add(h2D);\r
 \r
-  fRecSecTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecSecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
-\r
-  fRecSecTrackMatrix->GetAxis(1)->SetRange(1,fRecSecTrackMatrix->GetAxis(1)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(1)->SetRange(1,fRecTrackMatrix->GetAxis(1)->GetNbins());\r
-  fRecSecTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fRecTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
-\r
-  fRecSecTrackMatrix->GetAxis(2)->SetRange(1,fRecSecTrackMatrix->GetAxis(2)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(2)->SetRange(1,fRecTrackMatrix->GetAxis(2)->GetNbins());\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fRecSecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
 \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fRecSecTrackMatrix->GetAxis(0)->SetRange(1,fRecSecTrackMatrix->GetAxis(0)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(0)->SetRange(1,fRecTrackMatrix->GetAxis(0)->GetNbins());\r
-  fRecSecTrackMatrix->GetAxis(1)->SetRange(1,fRecSecTrackMatrix->GetAxis(1)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(1)->SetRange(1,fRecTrackMatrix->GetAxis(1)->GetNbins());\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // multiple track reconstruction correction\r
@@ -1820,36 +2012,14 @@ void AlidNdPtAnalysis::Analyse()
   h2D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2,0),fRecTrackMatrix->Projection(2,0),"zv_eta_mult_track_cont_matrix");\r
   aFolderObj->Add(h2D);\r
 \r
-  fRecMultTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecTrackMatrix->GetAxis(2)->SetRangeUser(minEta,maxEta);\r
-  fRecMultTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  \r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_mult_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
-\r
-  fRecMultTrackMatrix->GetAxis(1)->SetRangeUser(0.,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(0.,maxPt);\r
-  fRecMultTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-  fRecTrackMatrix->GetAxis(0)->SetRangeUser(minZv,maxZv);\r
-\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_mult_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
-\r
-  fRecMultTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(minPt,maxPt);\r
-\r
-  fRecMultTrackMatrix->GetAxis(2)->SetRange(1,fRecMultTrackMatrix->GetAxis(2)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(2)->SetRange(1,fRecTrackMatrix->GetAxis(2)->GetNbins());\r
-\r
-  h1D = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_mult_track_cont_matrix");\r
-  aFolderObj->Add(h1D);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_mult_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fRecMultTrackMatrix->GetAxis(1)->SetRangeUser(0.,maxPt);\r
-  fRecTrackMatrix->GetAxis(1)->SetRangeUser(0.,maxPt);\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_mult_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
-  fRecMultTrackMatrix->GetAxis(0)->SetRange(1,fRecMultTrackMatrix->GetAxis(0)->GetNbins());\r
-  fRecTrackMatrix->GetAxis(0)->SetRange(1,fRecTrackMatrix->GetAxis(0)->GetNbins());\r
+  h = AlidNdPtHelper::GenerateCorrMatrix(fRecMultTrackMatrix->Projection(2),fRecTrackMatrix->Projection(2),"eta_mult_track_cont_matrix");\r
+  aFolderObj->Add(h);\r
 \r
   //\r
   // Control histograms\r
@@ -1912,6 +2082,9 @@ void AlidNdPtAnalysis::Analyse()
   h2c->SetName("eff_pt_all");\r
   aFolderObj->Add(h2c);\r
 \r
+  fMCPrimTrackHist1[1]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[1]->GetAxis(1)->GetNbins()); \r
+  fMCPrimTrackHist1[2]->GetAxis(1)->SetRange(1,fMCPrimTrackHist1[2]->GetAxis(1)->GetNbins());\r
+\r
   //  pt spetra\r
   // - rec, primaries, secondaries\r
   // - primaries (pid) \r
@@ -1919,13 +2092,6 @@ void AlidNdPtAnalysis::Analyse()
   // - secondaries (mech)\r
   // - secondaries (mother)\r
   //\r
-  TH1D *pt_acc = fRecTrackHist1[1]->Projection(0);\r
-  pt_acc->SetName("pt_acc");\r
-  aFolderObj->Add(pt_acc);\r
-\r
-  TH1D *pt_rec = fRecTrackHist1[2]->Projection(0);\r
-  pt_rec->SetName("pt_rec");\r
-  aFolderObj->Add(pt_rec);\r
 \r
   TH1D *mc_pt_acc_all = fMCTrackHist1[1]->Projection(0);\r
   mc_pt_acc_all->SetName("mc_pt_acc_all");\r
@@ -2058,7 +2224,7 @@ void AlidNdPtAnalysis::Analyse()
   c->cd();\r
 \r
   //\r
-  fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.9,0.89); \r
+  fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.8,0.79); \r
 \r
   h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
   h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
@@ -2095,7 +2261,6 @@ void AlidNdPtAnalysis::Analyse()
   \r
   // \r
   fRecMCTrackHist1->GetAxis(1)->SetRange(1,fRecMCTrackHist1->GetAxis(1)->GetNbins()); \r
-  fRecMCTrackHist1->GetAxis(0)->SetRangeUser(minPt,maxPt); \r
 \r
   h2F = (TH2F*)fRecMCTrackHist1->Projection(2,1);\r
   h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r
@@ -2132,6 +2297,8 @@ void AlidNdPtAnalysis::Analyse()
 \r
   fRecMCTrackHist1->GetAxis(0)->SetRange(1,fRecMCTrackHist1->GetAxis(0)->GetNbins()); \r
 \r
+  } // end use MC info\r
+\r
   // export objects to analysis folder\r
   fAnalysisFolder = ExportToFolder(aFolderObj);\r
 \r