]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnalysisTaskQASym.cxx
SelectCollisionCandidates for TPC task
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
index 537a1b929ec3938335cc026c50e7d8c18426401d..ac80149a383491d62069b8531a76cdd9f4c8d0dc 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,24 @@ ClassImp(AliAnalysisTaskQASym)
   AliAnalysisTaskQASym::AliAnalysisTaskQASym(const char *name) 
     : AliAnalysisTaskSE(name) 
     ,fTrackType(0)
+    ,fStandAlone(0)
+    ,fLow(0)
+    ,fHigh(100000)
     ,fFieldOn(kTRUE)
-
     ,fHists(0)
-
     ,fHistRECpt(0)
     ,fEta(0)
+    ,fEtaWidth(0)
+    ,fPhiWidth(0)
+    ,fDcaWidth(0)
+    ,fPtWidth(0)
     ,fEtaPhi(0)
     ,fEtaPt(0)
     ,fQPt(0)
     ,fDca(0)
     ,fqRec(0)
-    ,fsigmaPt(0)
-  
+    ,fSigmaPtHist(0)
+    
     ,fRecPtPos(0)
     ,fRecPtNeg(0)
     ,fRecPhiPos(0)
@@ -65,8 +68,8 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegInv(0)
     ,fRecDPos(0)
     ,fRecDNeg(0)
-
-
+    
+    
     ,fRecQPtPosEta(0)
     ,fRecQPtNegEta(0)
     ,fRecPtPosEta(0)
@@ -77,7 +80,7 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegEta(0)
     ,fRecDPosEta(0)
     ,fRecDNegEta(0)
-  
+    
     ,fRecPtPosVz(0)
     ,fRecPtNegVz(0)
     ,fRecEtaPosVz(0)
@@ -90,20 +93,24 @@ 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)
-  
+    ,fVertexX(0)
+    ,fVertexY(0)
+    ,fVertexZ(0)
+    ,fNVertexSPD(0)
+    ,fNVertexTracks(0)
     ,fRecDcaPosPhi(0)
     ,fRecDcaNegPhi(0)
     ,fRecPtPosPhi(0)
@@ -145,20 +152,20 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecPtNegPhiEtaNeg(0) 
 
 
-    ,fRecDcaPhiPtPosEtaPos(0)
-    ,fRecDcaPhiPtNegEtaPos(0)
-    ,fRecDcaPhiPtPosEtaNeg(0)  
-    ,fRecDcaPhiPtNegEtaNeg(0)  
+//    ,fRecDcaPhiPtPosEtaPos(0)
+//    ,fRecDcaPhiPtNegEtaPos(0)
+//    ,fRecDcaPhiPtPosEtaNeg(0)  
+//    ,fRecDcaPhiPtNegEtaNeg(0)  
+
     ,fEtavPt(0)  
+    ,fPhivPt(0) 
     ,fCompareTPCparam(0)
 
-    
-    ,sdca(0)
-    ,xy(0)
-    ,z(0)
-    ,xvertexcor(0)
-    ,yvertexcor(0)  
+    ,fITSlayer(0)
+    ,fITSlayerEta(0)
+    ,fITSlayerPhi(0)
+
     ,fCuts(0)
 
 {
@@ -188,6 +195,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()); 
 
   
@@ -204,30 +220,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.);
+  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, 0, 1.5);
+                      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());
@@ -236,17 +275,35 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                       180, 0., 2*TMath::Pi());
   fNumber   = new TH1F("fNumber", 
                       "number of tracks per event",
-                      50, 0.5, 49.5);
+                      300, -0.5, 299.5);
+  fNumberAfterCut   = new TH1F("fNumberAfterCut", 
+                              "number of tracks per event after cuts",
+                              300, -0.5, 299.5);
   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.);
-
+  fVertexX   = new TH1F("fVertexX", 
+                       "X of vertex",
+                       100, -1., 1.);
+  fVertexY   = new TH1F("fVertexY", 
+                       "Y of vertex",
+                       100, -1., 1.);
+  fVertexZ   = new TH1F("fVertexZ", 
+                       "Z of vertex",
+                       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.);
@@ -264,7 +321,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                      " 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.);
 
@@ -651,7 +708,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()",
@@ -780,58 +837,92 @@ 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(fVertexX);
+  fHists->Add(fVertexY);
+  fHists->Add(fVertexZ);
+  fHists->Add(fNVertexSPD);
+  fHists->Add(fNVertexTracks);
 
   fHists->Add(fEtaPt);
   fHists->Add(fQPt);
@@ -842,7 +933,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fDiffDcaD);
 
   fHists->Add(fqRec);
-  fHists->Add(fsigmaPt);
+  fHists->Add(fSigmaPtHist);
 
   fHists->Add(fRecPtPos);
   fHists->Add(fRecPtNeg);
@@ -957,13 +1048,19 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fRecDcaPosPtEtaNeg);
   fHists->Add(fRecDcaNegPtEtaNeg);
 
-  fHists->Add(fRecDcaPhiPtPosEtaPos); 
-  fHists->Add(fRecDcaPhiPtPosEtaNeg); 
-  fHists->Add(fRecDcaPhiPtNegEtaPos); 
-  fHists->Add(fRecDcaPhiPtNegEtaNeg); 
-
-
-
+  //  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) {
@@ -973,15 +1070,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");
@@ -1007,13 +1108,49 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
   Float_t leadingPhi    =   0;//TMath::Pi();
 
 
-  if(event->GetNumberOfTracks()!=0) fNumber->Fill(event->GetNumberOfTracks());
+  //check vertices
+  AliESDEvent* esd = dynamic_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
   const AliVVertex* vertex = event->GetPrimaryVertex();
+  if(vertex->GetNContributors()==0) return;
+  Float_t vx = vertex->GetX();
+  Float_t vy = vertex->GetY();
   Float_t vz = vertex->GetZ();
+  
+  fVertexX->Fill(vx);
+  fVertexY->Fill(vy);
+  fVertexZ->Fill(vz);
+
   if (TMath::Abs(vz) > 10.) return;
 
+  fNumber->Fill(event->GetNumberOfTracks());
+
   AliESDtrack *tpcP = 0x0;
+  Int_t fNTracksAccepted=0;
+  Float_t phiArray   [event->GetNumberOfTracks()];
+  Float_t etaArray   [event->GetNumberOfTracks()];
+  Float_t ptArray    [event->GetNumberOfTracks()];
+  Float_t dcaArray   [event->GetNumberOfTracks()];
+  Int_t chargeArray[event->GetNumberOfTracks()];
+  Bool_t acceptedArray[event->GetNumberOfTracks()];
+
+  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++) {
     
@@ -1035,7 +1172,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     //__________
     // run Task for global tracks or ITS tracks or TPC tracks
     const AliExternalTrackParam *tpcPin = 0x0;
-    Double_t phiIn=0;
+    Double_t phiIn=0.;
+
     if(fTrackType==0){
       //Fill all histograms with global tracks
       tpcP = esdtrack;
@@ -1049,6 +1187,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
@@ -1069,6 +1213,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;
@@ -1080,12 +1232,13 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     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(TMath::Abs(fSigmaPt) < 1.e-10) continue;
 
-    if(sigmapt == 0.)continue;
-    fsigmaPt->Fill(TMath::Log10(sigmapt));
+    fSigmaPtHist->Fill(TMath::Log10(fSigmaPt));
  
 
     // hits in ITS layer
@@ -1123,10 +1276,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());
@@ -1135,7 +1290,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);
@@ -1146,27 +1302,40 @@ 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);
 
-    if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
-    
-    //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());
@@ -1174,37 +1343,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);
-       fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
+       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);
-       fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
+       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);
       }
       
     }
@@ -1217,7 +1386,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());
@@ -1225,40 +1394,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);
-       fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
+       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);
-       fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
+       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);
       }
 
     }
@@ -1271,8 +1440,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{
@@ -1280,8 +1449,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);
 
     }
 
@@ -1291,7 +1460,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*
@@ -1326,13 +1495,47 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
   }//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;
   }
   
 
   // Post output data.
   // PostData(1, fHistPt);