]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnalysisTaskQASym.cxx
clang compatibility
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
index 7d642346dc801ad0e0359924078905f1e4c3effa..b0189d4370f63f37cc96fd7ccc92b44fdef775a4 100644 (file)
@@ -8,8 +8,6 @@
 #include "TParticle.h"
 #include "TParticlePDG.h"
 #include "TProfile.h"
-#include "TNtuple.h"
-#include "TFile.h"
 
 #include "AliAnalysisTask.h"
 #include "AliAnalysisManager.h"
@@ -39,19 +37,25 @@ ClassImp(AliAnalysisTaskQASym)
   AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name) 
     : AliAnalysisTaskSE(name) 
     ,fTrackType(0)
+    ,fStandAlone(0)
+    ,fLow(0)
+    ,fHigh(100)
     ,fFieldOn(kTRUE)
-
     ,fHists(0)
-
     ,fHistRECpt(0)
     ,fEta(0)
+    ,fEtaWidth(0)
+    ,fPhiWidth(0)
+    ,fDcaWidth(0)
+    ,fPtWidth(0)
     ,fEtaPhi(0)
     ,fEtaPt(0)
     ,fQPt(0)
     ,fDca(0)
+    ,fDcaZ(0)
     ,fqRec(0)
-    ,fsigmaPt(0)
-  
+    ,fSigmaPtHist(0)
+    
     ,fRecPtPos(0)
     ,fRecPtNeg(0)
     ,fRecPhiPos(0)
@@ -65,8 +69,8 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegInv(0)
     ,fRecDPos(0)
     ,fRecDNeg(0)
-
-
+    
+    
     ,fRecQPtPosEta(0)
     ,fRecQPtNegEta(0)
     ,fRecPtPosEta(0)
@@ -77,7 +81,7 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegEta(0)
     ,fRecDPosEta(0)
     ,fRecDNegEta(0)
-  
+    
     ,fRecPtPosVz(0)
     ,fRecPtNegVz(0)
     ,fRecEtaPosVz(0)
@@ -90,20 +94,21 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecQPtNegEtaVz(0)
     ,fRecEtaPtPosVz(0)
     ,fRecEtaPtNegVz(0)
-  
-  
+    
+    
     ,fDeltaPhiAll(0)
     ,fDeltaPhiLeading(0) 
     ,fDiffDcaD(0)
-
+    
     ,fPhiRec(0)
     ,fThetaRec(0)
     ,fNumber(0)
+    ,fNumberAfterCut(0)
     ,fVx(0)
     ,fVy(0)
     ,fVz(0)
-    ,test(0)
-  
+    ,fNVertexSPD(0)
+    ,fNVertexTracks(0)
     ,fRecDcaPosPhi(0)
     ,fRecDcaNegPhi(0)
     ,fRecPtPosPhi(0)
@@ -133,30 +138,42 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegPhiEtaPos(0) 
     ,fRecDcaPosPhiEtaNeg(0)  
     ,fRecDcaNegPhiEtaNeg(0)  
+
+    ,fRecDcaPosPtEtaPos(0)
+    ,fRecDcaNegPtEtaPos(0) 
+    ,fRecDcaPosPtEtaNeg(0)  
+    ,fRecDcaNegPtEtaNeg(0)  
+  
     ,fRecPtPosPhiEtaPos(0)  
     ,fRecPtNegPhiEtaPos(0)  
     ,fRecPtPosPhiEtaNeg(0) 
     ,fRecPtNegPhiEtaNeg(0) 
 
 
-    ,fRecDcaPhiPtPosEtaPos(0)
-    ,fRecDcaPhiPtNegEtaPos(0)
-    ,fRecDcaPhiPtPosEtaNeg(0)  
-    ,fRecDcaPhiPtNegEtaNeg(0)  
+//    ,fRecDcaPhiPtPosEtaPos(0)
+//    ,fRecDcaPhiPtNegEtaPos(0)
+//    ,fRecDcaPhiPtPosEtaNeg(0)  
+//    ,fRecDcaPhiPtNegEtaNeg(0)  
+
     ,fEtavPt(0)  
+    ,fPhivPt(0) 
+    ,fCompareTPCparam(0)
 
+    ,fITSlayer(0)
+    ,fITSlayerEta(0)
+    ,fITSlayerPhi(0)
 
-    
-    ,sdca(0)
-    ,xy(0)
-    ,z(0)
-    ,xvertexcor(0)
-    ,yvertexcor(0)  
     ,fCuts(0)
 
 {
   // Constructor
+  for(Int_t i = 0;i<4;++i){
+    fVertexX[i]=0;
+    fVertexY[i]=0;
+    fVertexZ[i]=0;
+  }
+
   for(Int_t i = 0;i<18;++i){
     fRecPtTpcSector[i] = 0;
     fRecEtaTpcSector[i] = 0;
@@ -182,6 +199,15 @@ ClassImp(AliAnalysisTaskQASym)
     fDcaSigmaNeg[i] =0;
   }
 
+  for(Int_t i = 0;i< 3;i++){
+    for(Int_t j = 0;j< 2;j++){
+      fEtaBinPt[i][j]=0;
+      fPhiBinPt[i][j]=0;
+      fDcaBinPt[i][j]=0;
+      fEtaPhiBinPt[i][j]=0;
+    }
+  }
+
   DefineOutput(1,  TList::Class()); 
 
   
@@ -198,26 +224,53 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   Bool_t oldStatus = TH1::AddDirectoryStatus();
   TH1::AddDirectory(kFALSE);
 
-  Double_t range = 0.2;
+  Double_t range = 0.3;
   Double_t pt = 20.;
 
   fHists = new TList();
-  //  test   = new TNtuple("test","test",  
-  //                     "pt:phi:theta:x:y:z:charge");
+
   fHistRECpt   = new TH1F("fHistRECpt", 
                          " p_{T}",
-                         100, 0., 0.6);
+                         200, 0., pt);
   fEta   = new TH1F("fEta", 
                    " #eta",
                    200, -2., 2.);
- fEtavPt   = new TH2F("fEtavPt", 
-                   " #eta -p_{T}",
-                    200, -2., 2.,
-                    100, 0, 1.5);
+  fEtaWidth   = new TH1F("fEtaWidth", 
+                        " #eta",
+                        200, -2., 2.);
+  fPhiWidth   = new TH1F("fPhiWidth", 
+                        " #phi",
+                        200, 0., 2*TMath::Pi());
+  fDcaWidth   = new TH1F("fDcaWidth", 
+                        "dca",
+                        200, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+  fPtWidth   = new TH1F("fPtWidth", 
+                        "p_{T}",
+                        200, 0., pt);
+  fEtavPt   = new TH2F("fEtavPt", 
+                      " #eta -p_{T}",
+                      200, -2., 2.,
+                      100, -3, 4);
+  fPhivPt   = new TH2F("fPhivPt", 
+                      " #phi -p_{T}",
+                      200, 0, 2*TMath::Pi(),
+                      100, -3, 5);
+  fCompareTPCparam   = new TH2F("fCompareTPCparam", 
+                               "fCompareTPCparam",
+                               100, -1., 1.,100,-5, 5);
+
+  fITSlayer   = new TH1F("fITSlayer", 
+                        "fITSlayer",
+                        8, -1.5, 6.5);
+  fITSlayerEta   = new TH2F("fITSlayerEta", 
+                        "fITSlayerEta",
+                           8, -1.5, 6.5, 200, -2.,2.);
+  fITSlayerPhi   = new TH2F("fITSlayerPhi", 
+                           "fITSlayerPhi",
+                           8, -1.5, 6.5, 200, 0,2*TMath::Pi());
   fEtaPhi   = new TH2F("fEtaPhi", 
                       " #eta - #phi",
                       200, -2., 2., 128, 0., 2. * TMath::Pi());
-  
   fThetaRec   = new TH1F("fThetaRec", 
                         " #theta",
                         180, 0., TMath::Pi());
@@ -226,17 +279,26 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                       180, 0., 2*TMath::Pi());
   fNumber   = new TH1F("fNumber", 
                       "number of tracks per event",
-                      50, 0.5, 49.5);
+                      500, -5, 4995);
+  fNumberAfterCut   = new TH1F("fNumberAfterCut", 
+                              "number of tracks per event after cuts",
+                              500, -5, 4995);
   fVx   = new TH1F("fVx", 
-                  "X of vertex",
+                  "X of first track point",
                   100, -1., 1.);
   fVy   = new TH1F("fVy", 
-                  "Y of vertex",
+                  "Y of first track point",
                   100, -1., 1.);
   fVz   = new TH1F("fVz", 
-                  "Z of vertex",
+                  "Z of first track point",
                   200, -50., 50.);
-
+  fNVertexSPD   = new TH1F("fNVertexSPD", 
+                       "Number of SPD vertices",
+                       10, -0.5, 9.5);
+  fNVertexTracks   = new TH1F("fNVertexTracks", 
+                             "Number of track vertices",
+                             10, -0.5, 9.5);
+  
   fEtaPt   = new TH1F("fEtaPt", 
                      " #eta/p_{T} ",
                      100, -1., 1.);
@@ -249,17 +311,37 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                    " dca ",
                    200,  -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
 
+  fDcaZ   = new TH1F("fDcaZ", "fDcaZ ",200,  -3, 3);// limits fitting those of track cuts
+
 
   fqRec    = new TH1F("fqRec",   
                      " charge all reconstructed particle",
                      21, -9.5, 10.5);
   
-  fsigmaPt    = new TH1F("fsigmaPt",   
+  fSigmaPtHist    = new TH1F("fSigmaPtHist",   
                         "Log_{10}(#sigma_{p_{T}})",
                         200, -4., 8.);
 
 
-
+  TString lable[4]={"", "SPD", "Track", "TPC"};
+  for(Int_t i=0;i<4;i++){
+    fVertexX[i]   = new TH1F(Form("fVertexX%s",lable[i].Data()),
+                            Form("fVertexX%s",lable[i].Data()),
+                            100, -1., 1.);
+    fVertexY[i]   = new TH1F(Form("fVertexY%s",lable[i].Data()),
+                            Form("fVertexY%s",lable[i].Data()),
+                            100, -1., 1.);
+    if(i==1 || i==2){
+      fVertexZ[i]   = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+                              Form("fVertexZ%s",lable[i].Data()),
+                              200, -5., 5.);
+    }
+    else{
+      fVertexZ[i]   = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+                              Form("fVertexZ%s",lable[i].Data()),
+                              200, -50., 50.);
+    }
+  }
 
   //------------
   for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
@@ -547,10 +629,34 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                             100,-2.5 , 2., 180, 0, TMath::Pi()*2);
   fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
   fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
+  
+  //new
+  fRecDcaPosPtEtaPos   = new TH2F("fRecDcaPosPtEtaPos", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaPosPtEtaNeg   = new TH2F("fRecDcaPosPtEtaNeg", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaNegPtEtaPos   = new TH2F("fRecDcaNegPtEtaPos", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaNegPtEtaNeg   = new TH2F("fRecDcaNegPtEtaNeg", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+    
 
 
-
-    
   //  YIELDs ---------------- for TPC sectors
   for(Int_t sector=0; sector<18;sector++){
       
@@ -617,7 +723,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
     fRecEtaNegLadder[i]->GetXaxis()->SetTitle("#eta");
   }
 
-  Double_t vzmax = 15;
+  Double_t vzmax = 15.;
 
   fRecPtPosVz = new TH2F("fRecPtPosVz", 
                         "p_{T} distribution vs Vz()",
@@ -746,68 +852,101 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
 
 
 
-  fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
-                                  "#phi- p_{T} - DCA",
-                                  180,0,2*TMath::Pi(),
-                                  100,0,pt,
-                                  100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
-  fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
-  fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
-  fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
-
-  fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
-                                  "#phi- p_{T} - DCA",
-                                  180,0,2*TMath::Pi(),
-                                  100,0,pt,
-                                  100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
-  fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
-  fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
-  fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
-
-  fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
-                                  "#phi- p_{T} - DCA",
-                                  180,0,2*TMath::Pi(),
-                                  100,0,pt,
-                                  100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
-  fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
-  fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
-  fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
-
-  fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
-                                  "#phi- p_{T} - DCA",
-                                  180,0,2*TMath::Pi(),
-                                  100,0,pt,
-                                  100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
-  fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
-  fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
-  fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
-
-
+//   fRecDcaPhiPtPosEtaPos = new TH3F("fRecDcaPhiPtPosEtaPos",
+//                                "#phi- p_{T} - DCA",
+//                                180,0,2*TMath::Pi(),
+//                                100,0,pt,
+//                                100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+//   fRecDcaPhiPtPosEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
+//   fRecDcaPhiPtPosEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
+//   fRecDcaPhiPtPosEtaPos->GetZaxis()->SetTitle("dca (cm)");
+
+//   fRecDcaPhiPtPosEtaNeg = new TH3F("fRecDcaPhiPtPosEtaNeg",
+//                                "#phi- p_{T} - DCA",
+//                                180,0,2*TMath::Pi(),
+//                                100,0,pt,
+//                                100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+//   fRecDcaPhiPtPosEtaNeg->GetZaxis()->SetTitle("dca (cm)");
+//   fRecDcaPhiPtPosEtaNeg->GetXaxis()->SetTitle("#phi (rad.)");
+//   fRecDcaPhiPtPosEtaNeg->GetYaxis()->SetTitle("p_{T} (GeV/c)");
+
+//   fRecDcaPhiPtNegEtaPos = new TH3F("fRecDcaPhiPtNegEtaPos",
+//                                "#phi- p_{T} - DCA",
+//                                180,0,2*TMath::Pi(),
+//                                100,0,pt,
+//                                100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+//   fRecDcaPhiPtNegEtaPos->GetZaxis()->SetTitle("dca (cm)");
+//   fRecDcaPhiPtNegEtaPos->GetXaxis()->SetTitle("#phi (rad.)");
+//   fRecDcaPhiPtNegEtaPos->GetYaxis()->SetTitle("p_{T} (GeV/c)");
+
+//   fRecDcaPhiPtNegEtaNeg = new TH3F("fRecDcaPhiPtNegEtaNeg",
+//                                "#phi- p_{T} - DCA",
+//                                180,0,2*TMath::Pi(),
+//                                100,0,pt,
+//                                100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
+//   fRecDcaPhiPtNegEtaNeg->GetZaxis()->SetTitle("dca (cm)");
+//   fRecDcaPhiPtNegEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
+//   fRecDcaPhiPtNegEtaNeg->GetXaxis()->SetTitle("p_{T} (GeV/c)");
+
+  TString charge[2];
+  charge[0]="Pos";
+  charge[1]="Neg";
+
+  for(Int_t i=0;i<3;i++){
+    for(Int_t j=0;j<2;j++){
+      fEtaBinPt[i][j]   = new TH1F(Form("fEtaBinPt%d%s", i, charge[j].Data()), 
+                                  "eta",
+                                  200, -2., 2.);
+      fPhiBinPt[i][j]   = new TH1F(Form("fPhiBinPt%d%s", i,charge[j].Data() ), 
+                                  "phi",
+                                  181, 0, 2*TMath::Pi());
+      fDcaBinPt[i][j]   = new TH1F(Form("fDcaBinPt%d%s", i, charge[j].Data()), 
+                                  "DCA",
+                                  200,-range*(1+Int_t(fTrackType/2)*9),
+                                  range*(1+Int_t(fTrackType/2)*9) );
+      fEtaPhiBinPt[i][j]= new TH2F(Form("fEtaPhiBinPt%d%s", i, charge[j].Data()), 
+                                     "eta-phi",
+                                     200, -2., 2., 200, 0.,2*TMath::Pi());
+    }
+  }
 
 
   fHists->SetOwner();
 
   fHists->Add(fHistRECpt);
   fHists->Add(fEta);
+  fHists->Add(fEtaWidth);
+  fHists->Add(fPhiWidth);
+  fHists->Add(fDcaWidth);
+  fHists->Add(fPtWidth);
   fHists->Add(fEtavPt);
+  fHists->Add(fPhivPt);
+  fHists->Add(fCompareTPCparam);
+  fHists->Add(fITSlayer);
+  fHists->Add(fITSlayerEta);
+  fHists->Add(fITSlayerPhi);
   fHists->Add(fEtaPhi);
   fHists->Add(fThetaRec);
   fHists->Add(fPhiRec);
   fHists->Add(fNumber);
+  fHists->Add(fNumberAfterCut);
   fHists->Add(fVx);
   fHists->Add(fVy);
   fHists->Add(fVz);
+  fHists->Add(fNVertexSPD);
+  fHists->Add(fNVertexTracks);
 
   fHists->Add(fEtaPt);
   fHists->Add(fQPt);
   fHists->Add(fDca);
+  fHists->Add(fDcaZ);
 
   fHists->Add(fDeltaPhiAll);
   fHists->Add(fDeltaPhiLeading);
   fHists->Add(fDiffDcaD);
 
   fHists->Add(fqRec);
-  fHists->Add(fsigmaPt);
+  fHists->Add(fSigmaPtHist);
 
   fHists->Add(fRecPtPos);
   fHists->Add(fRecPtNeg);
@@ -835,7 +974,11 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fRecDPosEta);
   fHists->Add(fRecDNegEta);
 
-
+  for(Int_t i=0;i<4;i++){
+    fHists->Add(fVertexX[i]);
+    fHists->Add(fVertexY[i]);
+    fHists->Add(fVertexZ[i]);
+  }
   for(Int_t i=0;i<18;i++){
     fHists->Add(fRecPtTpcSector[i]);
     fHists->Add(fRecEtaTpcSector[i]);
@@ -917,13 +1060,24 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fRecPtPosPhiEtaNeg);
   fHists->Add(fRecPtNegPhiEtaNeg); 
 
-  fHists->Add(fRecDcaPhiPtPosEtaPos); 
-  fHists->Add(fRecDcaPhiPtPosEtaNeg); 
-  fHists->Add(fRecDcaPhiPtNegEtaPos); 
-  fHists->Add(fRecDcaPhiPtNegEtaNeg); 
-
-
-
+  fHists->Add(fRecDcaPosPtEtaPos);
+  fHists->Add(fRecDcaNegPtEtaPos);
+  fHists->Add(fRecDcaPosPtEtaNeg);
+  fHists->Add(fRecDcaNegPtEtaNeg);
+
+  //  fHists->Add(fRecDcaPhiPtPosEtaPos); 
+  //  fHists->Add(fRecDcaPhiPtPosEtaNeg); 
+  //  fHists->Add(fRecDcaPhiPtNegEtaPos); 
+  //  fHists->Add(fRecDcaPhiPtNegEtaNeg); 
+
+  for(Int_t i=0;i<3;i++){
+    for(Int_t j=0;j<2;j++){
+      fHists->Add(fEtaBinPt[i][j]);
+      fHists->Add(fPhiBinPt[i][j]);
+      fHists->Add(fDcaBinPt[i][j]);
+      fHists->Add(fEtaPhiBinPt[i][j]);
+    }
+  }
 
     
 //   for (Int_t i=0; i<fHists->GetEntries(); ++i) {
@@ -933,15 +1087,19 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
 //       h1->Sumw2();
 //     }
 //   }
-  // BKC
 
   TH1::AddDirectory(oldStatus);
+  PostData(1, fHists);
+
 }
 
 //__________________________________________________________
 
 void AliAnalysisTaskQASym::UserExec(Option_t *) 
 {
+  // QA of global, TPC, ITS and ITS stand alone tracks
+  // exploiting basic symmetries
+
   AliVEvent *event = InputEvent();
   if (!event) {
     Printf("ERROR: Could not retrieve event");
@@ -950,7 +1108,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
 
   if(Entry()==0){
-    AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+    AliESDEvent* esd = static_cast<AliESDEvent*>(event);
     if(esd){
       Printf("We are reading from ESD");
     }
@@ -967,17 +1125,97 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
   Float_t leadingPhi    =   0;//TMath::Pi();
 
 
-  if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
+  //check vertices
+  AliESDEvent* esd = static_cast<AliESDEvent*>(event);
+  Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex
+  Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();
+  fNVertexSPD->Fill(nPileSPDVertices);
+  fNVertexTracks->Fill(nPileTrkVertices);
+
+  //check primary vertex
+  Float_t vx = 0;
+  Float_t vy = 0;
+  Float_t vz = 0;
 
+  //primary vertex: contribution from different vertexers
   const AliVVertex* vertex = event->GetPrimaryVertex();
-  Float_t vz = vertex->GetZ();
+  if(!vertex) return;
+  vx = vertex->GetX();
+  vy = vertex->GetY();
+  vz = vertex->GetZ();
+  if(vertex->GetNContributors()>0){
+    fVertexX[0]->Fill(vx);
+    fVertexY[0]->Fill(vy);
+    fVertexZ[0]->Fill(vz);     
+  }
+  
+
+  
+  const AliVVertex* vertexSPD = esd->GetPrimaryVertexSPD();
+  if(vertexSPD){
+    if(vertexSPD->GetNContributors()>0){
+      fVertexX[1]->Fill(vertexSPD->GetX());
+      fVertexY[1]->Fill(vertexSPD->GetX());
+      fVertexZ[1]->Fill(vertexSPD->GetX());
+    }
+  }
+
+  const AliVVertex* vertexTrack = esd->GetPrimaryVertexTracks();
+  if(vertexTrack){
+    if(vertexTrack->GetNContributors()>0){
+      fVertexX[2]->Fill(vertexTrack->GetX());
+      fVertexY[2]->Fill(vertexTrack->GetX());
+      fVertexZ[2]->Fill(vertexTrack->GetX());
+    }
+  }
+
+  const AliVVertex* vertexTPC = esd->GetPrimaryVertexTPC();
+  if(vertexTPC){
+    if(vertexTPC->GetNContributors()>0){
+      fVertexX[3]->Fill(vertexTPC->GetX());
+      fVertexY[3]->Fill(vertexTPC->GetX());
+      fVertexZ[3]->Fill(vertexTPC->GetX());
+    }
+  }
+
+  //cuts on general vertex
+  if(vertex->GetNContributors()<1) return;
   if (TMath::Abs(vz) > 10.) return;
 
+  fNumber->Fill(event->GetNumberOfTracks());
+
+  AliESDtrack *tpcP = 0x0;
+  Int_t fNTracksAccepted=0;
+  const Int_t arrSize = event->GetNumberOfTracks();
+  Float_t * phiArray      = new Float_t[arrSize];
+  Float_t * etaArray      = new Float_t[arrSize];
+  Float_t * ptArray       = new Float_t[arrSize];
+  Float_t * dcaArray      = new Float_t[arrSize];
+  Int_t   * chargeArray   = new Int_t  [arrSize];
+  Bool_t  * acceptedArray = new Bool_t [arrSize];
+
+  for (Int_t i = 0; i < event->GetNumberOfTracks(); i++) {
+    phiArray[i]     = 0.;
+    etaArray[i]     = 0.;
+    ptArray[i]      = 0.;
+    dcaArray[i]     = 0.;
+    chargeArray[i]  = 0;
+    acceptedArray[i]= kFALSE;
+    
+  }
+
+
+
   for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
     
+    //prevent mem leak for TPConly track
+    if(fTrackType==2&&tpcP){
+      delete tpcP;
+      tpcP = 0;
+    }
 
     AliVParticle *track = event->GetTrack(iTrack);
-    AliESDtrack *esdtrack =  dynamic_cast<AliESDtrack*>(track);
+    AliESDtrack *esdtrack =  static_cast<AliESDtrack*>(track);
     esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
                             event->GetMagneticField(), 10000.);
 
@@ -987,15 +1225,15 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     }
     //__________
     // run Task for global tracks or ITS tracks or TPC tracks
-    AliESDtrack *tpcP = 0x0;
     const AliExternalTrackParam *tpcPin = 0x0;
-    Double_t phiIn=0;
+    Double_t phiIn=0.;
+
     if(fTrackType==0){
       //Fill all histograms with global tracks
       tpcP = esdtrack;
-      phiIn = tpcP->Phi();
       if (!tpcP) continue;
       if (!fCuts->AcceptTrack(tpcP)) continue;
+      phiIn = tpcP->Phi();
     }
     else if(fTrackType==1){
       //Fill all histograms with ITS tracks
@@ -1003,6 +1241,12 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       phiIn = tpcP->Phi();
       if (!tpcP) continue;
       if (!fCuts->AcceptTrack(tpcP)) continue;
+      if(fStandAlone==kTRUE) {
+       if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
+      }
+      else if(fStandAlone==kFALSE){
+       if(tpcP->GetStatus()&AliESDtrack::kITSpureSA)continue;
+      }
     }
     else if(fTrackType==2){     
       //Fill all histograms with TPC track information
@@ -1010,7 +1254,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       if (!tpcPin) continue;
       phiIn=tpcPin->Phi();
 
-      tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
+      tpcP = AliESDtrackCuts::GetTPCOnlyTrack(static_cast<AliESDEvent*>(event),esdtrack->GetID());
       if (!tpcP) continue;
       if (!fCuts->AcceptTrack(tpcP)) continue;
       if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
@@ -1023,6 +1267,14 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     //___________
     //
   
+
+    fNTracksAccepted++;
+    phiArray[iTrack]     = phiIn;
+    etaArray[iTrack]     = tpcP->Eta();
+    ptArray[iTrack]      = tpcP->Pt();
+    chargeArray[iTrack]  = tpcP->Charge();
+    acceptedArray[iTrack]= kTRUE;
+
  
     if(tpcP->E()>leadingEnergy){
       leadingTrack=iTrack;
@@ -1030,16 +1282,17 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       leadingPhi=phiIn;
     }
    
-
+    
     fqRec->Fill(tpcP->Charge());
   
 
-    Double_t sigmapt = tpcP->GetSigma1Pt2();
-    sigmapt= sqrt(sigmapt);
-    sigmapt= sigmapt *(tpcP->Pt()*tpcP->Pt()); 
+    Double_t fSigmaPt = tpcP->GetSigma1Pt2();
+    fSigmaPt= sqrt(fSigmaPt);
+    fSigmaPt= fSigmaPt *(tpcP->Pt()*tpcP->Pt()); 
 
-    if(sigmapt == 0.)continue;
-    fsigmaPt->Fill(TMath::Log10(sigmapt));
+    if(TMath::Abs(fSigmaPt) < 1.e-10) continue;
+
+    fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
  
 
     // hits in ITS layer
@@ -1077,10 +1330,12 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
    
    
     //------------------- 
+    Float_t fXVertexCor = 0.;
+    Float_t fYVertexCor = 0.;
 
-    xvertexcor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
-    yvertexcor = tpcP->Yv() - vertex->GetY(); // "
-    sdca = (tpcP->Py()*xvertexcor - tpcP->Px()*yvertexcor)/tpcP->Pt();
+    fXVertexCor = tpcP->Xv() - vertex->GetX(); // coordinate corrected for vertex position
+    fYVertexCor = tpcP->Yv() - vertex->GetY(); // "
+    Double_t fSignedDca = (tpcP->Py()*fXVertexCor - tpcP->Px()*fYVertexCor)/tpcP->Pt();
 
 
     fqPtRec[cas]->Fill(tpcP->Charge()/tpcP->Pt());
@@ -1089,7 +1344,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
     fHistRECpt->Fill(tpcP->Pt());
     fEta->Fill(tpcP->Eta());
-    fEtavPt->Fill(tpcP->Eta(), tpcP->Pt());
+    fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
+    fPhivPt->Fill(phiIn, TMath::Log(tpcP->Pt()));
     fEtaPhi->Fill(tpcP->Eta(), phiIn);
     fThetaRec->Fill(tpcP->Theta());
     fPhiRec->Fill(phiIn);
@@ -1100,27 +1356,41 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
     fEtaPt->Fill(tpcP->Eta()/tpcP->Pt());
     fQPt->Fill(tpcP->Charge()/tpcP->Pt());
-    fDca->Fill(sdca);
+    fDca->Fill(fSignedDca);
+    dcaArray[iTrack]=fSignedDca;
     fRecQPtPhi->Fill(tpcP->Charge()/tpcP->Pt(), phiIn);
 
+    Float_t fXY = 0.;
+    Float_t  fZ = 0.;
 
-    tpcP->GetImpactParameters(xy,z);
-    fDiffDcaD->Fill(sdca+xy);
-
-   
+    tpcP->GetImpactParameters(fXY,fZ);
+    fDiffDcaD->Fill(fSignedDca+fXY);
+    fDcaZ->Fill(fZ);
     
-    //for positive particles
+    if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
+
+    if(fTrackType!=2){//for global and ITS tracks
+      for(Int_t itsLayer=0;itsLayer<6;itsLayer++){
+       if(tpcP->HasPointOnITSLayer(itsLayer)){
+         fITSlayer->Fill(itsLayer);
+         fITSlayerEta->Fill(itsLayer, tpcP->Eta());
+         fITSlayerPhi->Fill(itsLayer, tpcP->Phi());
+       }
+      }    
+    }
 
+    //for positive particles
+    
     if(tpcP->Charge()>0){
       fRecPtPos->Fill(tpcP->Pt());
       fRecPtPosLadder[cas]->Fill(tpcP->Pt());
       fRecPtPosVz->Fill(TMath::Log10(tpcP->Pt()),tpcP->Zv());
       fRecPhiPos->Fill(TMath::RadToDeg()*phiIn);
-    
-     
+      
+      
       fRecPhiPosLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
       fRecPhiPosVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
-      fSignedDcaPosVz->Fill(sdca,tpcP->Zv());
+      fSignedDcaPosVz->Fill(fSignedDca,tpcP->Zv());
 
       fRecEtaPos->Fill(tpcP->Eta());
       fRecEtaPosLadder[cas]->Fill(tpcP->Eta());
@@ -1128,35 +1398,37 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       fRecEtaPosVz->Fill(tpcP->Eta(),tpcP->Zv());
       fRecEtaPtPosVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
      
-      fRecDcaPos->Fill(sdca);
-      fRecDcaPosPhi->Fill(sdca, phiIn);
+      fRecDcaPos->Fill(fSignedDca);
+      fRecDcaPosPhi->Fill(fSignedDca, phiIn);
       fRecPtPosPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
       fRecEtaPtPosPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
       fRecEtaPosPhi->Fill(tpcP->Eta(), phiIn);
-      fRecDPos->Fill(xy);
-      fSignDcaPos[cas]->Fill(sdca);
+      fRecDPos->Fill(fXY);
+      fSignDcaPos[cas]->Fill(fSignedDca);
     
      
-      fDcaSigmaPos[cas]->Fill(sdca, TMath::Log10(sigmapt));
+      fDcaSigmaPos[cas]->Fill(fSignedDca, TMath::Log10(fSigmaPt));
     
-      fPtSigmaPos[cas]->Fill(TMath::Log10(sigmapt));
+      fPtSigmaPos[cas]->Fill(TMath::Log10(fSigmaPt));
       //pos eta
       if(tpcP->Eta()>0){
        fRecPtPosEtaPos->Fill(tpcP->Pt());
        fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
        fRecPhiPosEtaPos->Fill(phiIn);
-       fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
+       fRecDcaPosPhiEtaPos->Fill(fSignedDca, phiIn);
+       fRecDcaPosPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
        fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
-       fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
+       //fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
       }
       //neg eta
       else{
        fRecPtPosEtaNeg->Fill(tpcP->Pt());
        fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
        fRecPhiPosEtaNeg->Fill(phiIn);
-       fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
+       fRecDcaPosPhiEtaNeg->Fill(fSignedDca, phiIn);
+       fRecDcaPosPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
        fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
-       fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
+       //fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
       }
       
     }
@@ -1169,7 +1441,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       fRecPhiNeg->Fill(TMath::RadToDeg()*phiIn);
       fRecPhiNegLadder[cas]->Fill(TMath::RadToDeg()*phiIn);
       fRecPhiNegVz->Fill(TMath::RadToDeg()*phiIn,tpcP->Zv());
-      fSignedDcaNegVz->Fill(sdca,tpcP->Zv());
+      fSignedDcaNegVz->Fill(fSignedDca,tpcP->Zv());
       fRecEtaPtNegVz->Fill(tpcP->Eta()/tpcP->Pt(),tpcP->Zv());
 
       fRecEtaNeg->Fill(tpcP->Eta());
@@ -1177,38 +1449,40 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       fRecEtaPtNeg->Fill(tpcP->Eta()/tpcP->Pt());
       fRecEtaNegVz->Fill(tpcP->Eta(),tpcP->Zv());
      
-      fRecDcaNeg->Fill(sdca);
-      fRecDcaNegInv->Fill(-sdca);
-      fRecDcaNegPhi->Fill(sdca, phiIn);
+      fRecDcaNeg->Fill(fSignedDca);
+      fRecDcaNegInv->Fill(-fSignedDca);
+      fRecDcaNegPhi->Fill(fSignedDca, phiIn);
       fRecPtNegPhi->Fill(TMath::Log10(tpcP->Pt()), phiIn);
       fRecEtaNegPhi->Fill(tpcP->Eta(), phiIn);
       fRecEtaPtNegPhi->Fill(tpcP->Eta()/tpcP->Pt(), phiIn);
-      fRecDNeg->Fill(xy);
-      fSignDcaNeg[cas]->Fill(sdca);
-      fSignDcaNegInv[cas]->Fill(-sdca);
+      fRecDNeg->Fill(fXY);
+      fSignDcaNeg[cas]->Fill(fSignedDca);
+      fSignDcaNegInv[cas]->Fill(-fSignedDca);
      
      
-      fDcaSigmaNeg[cas]->Fill(sdca,TMath::Log10(sigmapt));
+      fDcaSigmaNeg[cas]->Fill(fSignedDca,TMath::Log10(fSigmaPt));
    
-      fPtSigmaNeg[cas]->Fill(TMath::Log10(sigmapt));
+      fPtSigmaNeg[cas]->Fill(TMath::Log10(fSigmaPt));
       
       //pos eta
       if(tpcP->Eta()>0){
        fRecPtNegEtaPos->Fill(tpcP->Pt());
        fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
        fRecPhiNegEtaPos->Fill(phiIn);
-       fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
+       fRecDcaNegPhiEtaPos->Fill(fSignedDca, phiIn);
+       fRecDcaNegPtEtaPos->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
        fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
-       fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
+       //fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), fSignedDca);
       }
       //neg eta
       else{
        fRecPtNegEtaNeg->Fill(tpcP->Pt());
        fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
        fRecPhiNegEtaNeg->Fill(phiIn);
-       fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
+       fRecDcaNegPhiEtaNeg->Fill(fSignedDca, phiIn);
+       fRecDcaNegPtEtaNeg->Fill(fSignedDca, TMath::Log10(tpcP->Pt()));
        fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
-       fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
+       //fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), fSignedDca);
       }
 
     }
@@ -1221,8 +1495,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       fRecPtPosEta->Fill(tpcP->Pt());
       fRecPhiPosEta->Fill(TMath::RadToDeg()*phiIn);
       fRecQPtPosEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
-      fRecDcaPosEta->Fill(sdca);
-      fRecDPosEta->Fill(xy);
+      fRecDcaPosEta->Fill(fSignedDca);
+      fRecDPosEta->Fill(fXY);
     }
     //all particles with negative eta (and eta==0)
     else{
@@ -1230,8 +1504,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       fRecPtNegEta->Fill(tpcP->Pt());
       fRecPhiNegEta->Fill(TMath::RadToDeg()*phiIn);
       fRecQPtNegEtaVz->Fill(tpcP->Charge()/tpcP->Pt(),tpcP->Zv());
-      fRecDcaNegEta->Fill(sdca);
-      fRecDNegEta->Fill(xy);
+      fRecDcaNegEta->Fill(fSignedDca);
+      fRecDNegEta->Fill(fXY);
 
     }
 
@@ -1241,7 +1515,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     fRecEtaTpcSector[Int_t(phiIn*
                           TMath::RadToDeg()/20)]->Fill(tpcP->Eta());
     fSignedDcaTpcSector[Int_t(phiIn*
-                             TMath::RadToDeg()/20)]->Fill(sdca); 
+                             TMath::RadToDeg()/20)]->Fill(fSignedDca); 
     fRecQPtTpcSector[Int_t(phiIn*
                           TMath::RadToDeg()/20)]->Fill(tpcP->Charge()/tpcP->Pt());
     fRecEtaPtTpcSector[Int_t(phiIn*
@@ -1255,7 +1529,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 //       if(LeadingTrack==iTrack2) continue;
 
 //       AliVParticle *track2 = event->GetTrack(iTrack2);
-//       AliESDtrack* esdtrack2 =  dynamic_cast<AliESDtrack*>(track2);
+//       AliESDtrack* esdtrack2 =  static_cast<AliESDtrack*>(track2);
 //       if (!track2) {
 //     Printf("ERROR: Could not receive track %d", iTrack);
 //     continue;
@@ -1271,11 +1545,82 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
      
 
 //     }//second track loop
+
+    // if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
+
   }//first track loop
 
+  fNumberAfterCut->Fill(fNTracksAccepted);
   
+  //second track loop
  
+  for (Int_t iT = 0; iT < event->GetNumberOfTracks(); iT++) {
+    if(acceptedArray[iT]){
+      if(ptArray[iT]>0.2 && ptArray[iT]<1. ){
+       fEtaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
+       fDcaBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
+       fPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
+       fEtaPhiBinPt[0][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
+      }
+      else if(ptArray[iT]>1. && ptArray[iT]<5.){
+       fEtaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
+       fDcaBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
+       fPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
+       fEtaPhiBinPt[1][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
+      }
+      else if (ptArray[iT]>5.){
+       fEtaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT]);
+       fDcaBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(dcaArray[iT]);
+       fPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(phiArray[iT]);
+       fEtaPhiBinPt[2][Bool_t(chargeArray[iT]>0)]->Fill(etaArray[iT], phiArray[iT]);
+      }
+
+      if(fNTracksAccepted>=fLow&&fNTracksAccepted<=fHigh){
+       fEtaWidth->Fill(etaArray[iT]);
+       fPhiWidth->Fill(phiArray[iT]);
+       fDcaWidth->Fill(dcaArray[iT]);
+       fPtWidth->Fill(ptArray[iT]);
+       }
+     }
+  }
 
+
+  //prevent mem leak for TPConly track
+  if(fTrackType==2&&tpcP){
+    delete tpcP;
+    tpcP = 0;
+  }
+
+  if(phiArray){
+    delete[] phiArray; 
+    phiArray=0; 
+  }
+  
+  if(etaArray){
+    delete[] etaArray; 
+    etaArray=0; 
+  }
+  
+  if(dcaArray){
+    delete[] dcaArray; 
+    dcaArray=0; 
+  }
+  
+  if(ptArray){
+    delete[] ptArray; 
+    ptArray=0; 
+  }
+  
+  if(chargeArray){
+    delete[] chargeArray; 
+    chargeArray=0; 
+  }
+  
+  if(acceptedArray){
+    delete[] acceptedArray; 
+    acceptedArray=0; 
+  }
+  
   // Post output data.
   // PostData(1, fHistPt);
   PostData(1, fHists);