]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnalysisTaskQASym.cxx
SelectCollisionCandidates for TPC task
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
index 904e33f7107d7c2b1cff75414477c6501307fd5c..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"
@@ -40,16 +38,22 @@ ClassImp(AliAnalysisTaskQASym)
     : 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)
@@ -98,14 +102,15 @@ ClassImp(AliAnalysisTaskQASym)
     ,fPhiRec(0)
     ,fThetaRec(0)
     ,fNumber(0)
+    ,fNumberAfterCut(0)
     ,fVx(0)
     ,fVy(0)
     ,fVz(0)
     ,fVertexX(0)
     ,fVertexY(0)
     ,fVertexZ(0)
-    ,test(0)
-  
+    ,fNVertexSPD(0)
+    ,fNVertexTracks(0)
     ,fRecDcaPosPhi(0)
     ,fRecDcaNegPhi(0)
     ,fRecPtPosPhi(0)
@@ -153,15 +158,14 @@ ClassImp(AliAnalysisTaskQASym)
 //    ,fRecDcaPhiPtNegEtaNeg(0)  
 
     ,fEtavPt(0)  
+    ,fPhivPt(0) 
     ,fCompareTPCparam(0)
+
     ,fITSlayer(0)
-    
-    ,sdca(0)
-    ,xy(0)
-    ,z(0)
-    ,xvertexcor(0)
-    ,yvertexcor(0)  
+    ,fITSlayerEta(0)
+    ,fITSlayerPhi(0)
+
     ,fCuts(0)
 
 {
@@ -191,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()); 
 
   
@@ -211,30 +224,49 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   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}",
                          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",
+  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());
@@ -243,7 +275,10 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                       180, 0., 2*TMath::Pi());
   fNumber   = new TH1F("fNumber", 
                       "number of tracks per event",
-                      200, -0.5, 199.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 first track point",
                   100, -1., 1.);
@@ -262,6 +297,12 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   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} ",
@@ -280,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.);
 
@@ -667,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()",
@@ -832,26 +873,56 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
 //   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);
@@ -862,7 +933,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fDiffDcaD);
 
   fHists->Add(fqRec);
-  fHists->Add(fsigmaPt);
+  fHists->Add(fSigmaPtHist);
 
   fHists->Add(fRecPtPos);
   fHists->Add(fRecPtNeg);
@@ -982,8 +1053,14 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   //  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) {
@@ -993,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");
@@ -1027,8 +1108,15 @@ 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();
@@ -1041,7 +1129,28 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
   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++) {
     
@@ -1063,7 +1172,7 @@ 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
@@ -1081,6 +1190,9 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       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
@@ -1101,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;
@@ -1112,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(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
@@ -1155,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());
@@ -1167,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);
@@ -1178,19 +1302,24 @@ 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());
+    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());
        }
       }    
     }
@@ -1206,7 +1335,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       
       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());
@@ -1214,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);
       }
       
     }
@@ -1257,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());
@@ -1265,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);
       }
 
     }
@@ -1311,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{
@@ -1320,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);
 
     }
 
@@ -1331,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*
@@ -1366,6 +1495,41 @@ 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;