]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
modifications for 2011 Pb+Pb, clusters vs .phi
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Dec 2011 12:01:05 +0000 (12:01 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Dec 2011 12:01:05 +0000 (12:01 +0000)
PWG4/JetTasks/AliPWG4HighPtTrackQA.cxx
PWG4/JetTasks/AliPWG4HighPtTrackQA.h
PWG4/macros/AddTaskESDFilterPWG4Train.C
PWG4/macros/AddTaskPWG4HighPtSpectra.C
PWG4/macros/AddTaskPWG4HighPtTrackQA.C

index 4e664ba0914aeb542a5f977b70fb44dbcdcd5add..49b713fd48dd5b59b0b20400283caa9560758f57 100644 (file)
@@ -73,7 +73,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA()
   fPtMax(100.),
   fIsPbPb(0),
   fCentClass(10),
-  fNVariables(23),
+  fNVariables(25),
   fVariables(0x0),
   fAvgTrials(1),
   fNEventAll(0),
@@ -95,6 +95,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA()
   fPtDCAZ(0x0),
   fPtNClustersTPC(0x0),
   fPtNClustersTPCIter1(0x0),
+  fPtNClustersTPCIter1Phi(0x0),
   fPtNClustersTPCShared(0x0),
   fPtNClustersTPCSharedFrac(0x0),
   fPtNPointITS(0x0),
@@ -112,6 +113,8 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA()
   fPtNCrossedRows(0x0),
   fPtNCrossedRowsNClusF(0x0),
   fPtNCrRNCrRNClusF(0x0),
+  fPtNCrossedRowsFit(0x0),
+  fPtNCrossedRowsNClusFFit(0x0),
   fPtChi2Gold(0x0),
   fPtChi2GGC(0x0),
   fPtChi2GoldPhi(0x0),
@@ -129,10 +132,9 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA()
   fProfPtSigma1Pt2(0x0),
   fProfPtSigma1Pt(0x0),
   fProfPtPtSigma1Pt(0x0),
-  fSystTrackCuts(0x0),
   fHistList(0)
 {
-  SetNVariables(23);
+  SetNVariables(25);
 
   fPtBinEdges[0][0] = 10.;
   fPtBinEdges[0][1] = 1.;
@@ -158,7 +160,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   fPtMax(100.),
   fIsPbPb(0),
   fCentClass(10),
-  fNVariables(23),
+  fNVariables(25),
   fVariables(0x0),
   fAvgTrials(1),
   fNEventAll(0),
@@ -180,6 +182,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   fPtDCAZ(0x0),
   fPtNClustersTPC(0x0),
   fPtNClustersTPCIter1(0x0),
+  fPtNClustersTPCIter1Phi(0x0),
   fPtNClustersTPCShared(0x0),
   fPtNClustersTPCSharedFrac(0x0),
   fPtNPointITS(0x0),
@@ -197,6 +200,8 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   fPtNCrossedRows(0x0),
   fPtNCrossedRowsNClusF(0x0),
   fPtNCrRNCrRNClusF(0x0),
+  fPtNCrossedRowsFit(0x0),
+  fPtNCrossedRowsNClusFFit(0x0),
   fPtChi2Gold(0x0),
   fPtChi2GGC(0x0),
   fPtChi2GoldPhi(0x0),
@@ -214,7 +219,6 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   fProfPtSigma1Pt2(0x0),
   fProfPtSigma1Pt(0x0),
   fProfPtPtSigma1Pt(0x0),
-  fSystTrackCuts(0x0),
   fHistList(0)
 {
   //
@@ -222,7 +226,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   //
   AliDebug(2,Form("AliPWG4HighPtTrackQA Calling Constructor"));
 
-  SetNVariables(23);
+  SetNVariables(25);
 
   fPtBinEdges[0][0] = 10.;
   fPtBinEdges[0][1] = 1.;
@@ -475,17 +479,6 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() {
   fh1NTracksSel = new TH1F("fh1NTracksSel","fh1NTracksSel",1,-0.5,0.5);
   fHistList->Add(fh1NTracksSel);
 
-  fSystTrackCuts = new TH1F("fSystTrackCuts","fSystTrackCuts",1,-0.5,0.5);
-  fSystTrackCuts->Fill("noCut",0);
-  fSystTrackCuts->Fill("eta",0);
-  fSystTrackCuts->Fill("0.15<pT<1e10",0);
-  fSystTrackCuts->Fill("kink",0);
-  fSystTrackCuts->Fill("NClusterTPC",0);
-  fSystTrackCuts->Fill("Chi2PerNClusTPC",0);
-  fSystTrackCuts->Fill("DCA2D",0);
-  fHistList->Add(fSystTrackCuts);
-
-
   fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, binsPt);
   fHistList->Add(fPtAll);
   fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, binsPt);
@@ -509,6 +502,9 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() {
   fPtNClustersTPCIter1 = new TH2F("fPtNClustersTPCIter1","fPtNClustersTPCIter1",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
   fHistList->Add(fPtNClustersTPCIter1);
 
+  fPtNClustersTPCIter1Phi = new TH3F("fPtNClustersTPCIter1Phi","fPtNClustersTPCIter1Phi",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNPhiBins,binsPhi);
+  fHistList->Add(fPtNClustersTPCIter1Phi);
+
   fPtNClustersTPCShared = new TH2F("fPtNClustersTPCShared","fPtNClustersTPCShared",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
   fHistList->Add(fPtNClustersTPCShared);
 
@@ -560,6 +556,12 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() {
   fPtNCrRNCrRNClusF = new TH3F("fPtNCrRNCrRNClusF","fPtNCrRNCrRNClusF",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
   fHistList->Add(fPtNCrRNCrRNClusF);
 
+  fPtNCrossedRowsFit = new TH2F("fPtNCrossedRowsFit","fPtNCrossedRowsFit",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
+  fHistList->Add(fPtNCrossedRowsFit);
+
+  fPtNCrossedRowsNClusFFit = new TH2F("fPtNCrossedRowsNClusFFit","fPtNCrossedRowsNClusFFit",fgkNPtBins,binsPt,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
+  fHistList->Add(fPtNCrossedRowsNClusFFit);
+
   fPtChi2Gold = new TH2F("fPtChi2Gold","fPtChi2Gold",fgkNPtBins,binsPt,fgkNChi2CBins,binsChi2C);
   fHistList->Add(fPtChi2Gold);
 
@@ -671,7 +673,10 @@ Bool_t AliPWG4HighPtTrackQA::SelectEvent() {
 
   //Check if vertex is reconstructed
   if(fDataType==kESD&&dynamic_cast<AliESDEvent*>(fEvent)) {
-    fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexSPD();
+    fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexTracks();
+
+    if (!fVtx || !fVtx->GetStatus())
+      fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexSPD();
 
     if(!fVtx) {
       fNEventReject->Fill("noVTX",1);
@@ -932,7 +937,6 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() {
       continue;
 
     if(fTrackType==4) {
-      FillSystematicCutHist(esdtrack);
       if (!(fTrackCuts->AcceptTrack(esdtrack))) {
        fh1NTracksReject->Fill("trackCuts",1);
        if(origtrack) delete origtrack;
@@ -1016,9 +1020,6 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() {
       }
     }
 
-    if(fTrackType!=4)
-      FillSystematicCutHist(track);
-
     fPtAll->Fill(track->Pt());
 
     if (!(fTrackCuts->AcceptTrack(track)) && fTrackType!=4 && fTrackType!=5 && fTrackType!=6) {
@@ -1090,7 +1091,8 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() {
   
     if(fVariables->At(5)>0.) fVariables->SetAt(track->GetTPCchi2()/fVariables->At(5),10);
     
-    fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
+    //  fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
+    fVariables->SetAt(track->GetTPCCrossedRows(),11); //#crossed rows
     Float_t crossedRowsTPCNClsF = 1.;//track->GetTPCClusterInfo(2,0);
     if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/track->GetTPCNclsF();
     fVariables->SetAt(crossedRowsTPCNClsF,12);//(#crossed rows)/(#findable clusters)
@@ -1105,11 +1107,16 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() {
 
     fVariables->SetAt(track->GetTPCnclsS(),20);
 
-    Float_t chi2Gold = GetGoldenChi2(origtrack);
+    Float_t chi2Gold = origtrack->GetChi2TPCConstrainedVsGlobal(fVtx);//GetGoldenChi2(origtrack);
     Float_t chi2GGC  = GetGGCChi2(origtrack);
 
     fVariables->SetAt(chi2Gold,21);
     fVariables->SetAt(chi2GGC,22);
+
+    fVariables->SetAt(GetTPCClusterInfoFitMap(track,2,1),23);
+    Float_t crossedRowsTPCNClsFFit = 1.;
+    if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsFFit = fVariables->At(23)/track->GetTPCNclsF();
+    fVariables->SetAt(crossedRowsTPCNClsFFit,24);
     
     FillHistograms();
   
@@ -1154,7 +1161,7 @@ void AliPWG4HighPtTrackQA::DoAnalysisAOD() {
     fVariables->SetAt(0.,8);
     fVariables->SetAt(GetTrackLengthTPC(aodtrack),9);
     fVariables->SetAt(aodtrack->Chi2perNDF(),10);
-    fVariables->SetAt(GetTPCClusterInfo(aodtrack,2),11);
+    fVariables->SetAt(GetTPCClusterInfo(aodtrack,2,1),11);
     Float_t crossedRowsTPCNClsF = 0.;
     if(aodtrack->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/aodtrack->GetTPCNclsF();
     fVariables->SetAt(crossedRowsTPCNClsF,12);
@@ -1184,6 +1191,9 @@ void AliPWG4HighPtTrackQA::DoAnalysisAOD() {
     fVariables->SetAt(0.,21); //not available in AOD
     fVariables->SetAt(0.,22); //not available in AOD
 
+    fVariables->SetAt(0.,23); //not available in AOD
+    fVariables->SetAt(0.,24); //not available in AOD
+
     fPtAll->Fill(fVariables->At(0));
 
     FillHistograms();
@@ -1205,6 +1215,7 @@ void AliPWG4HighPtTrackQA::FillHistograms() {
 
   
   fPtNClustersTPCIter1->Fill(fVariables->At(0),fVariables->At(18));
+  fPtNClustersTPCIter1Phi->Fill(fVariables->At(0),fVariables->At(18),fVariables->At(1));
   fPtNClustersTPCShared->Fill(fVariables->At(0),fVariables->At(20));
   if(fVariables->At(5)>0.)
     fPtNClustersTPCSharedFrac->Fill(fVariables->At(0),fVariables->At(20)/fVariables->At(5));
@@ -1250,6 +1261,9 @@ void AliPWG4HighPtTrackQA::FillHistograms() {
 
   fChi2GoldChi2GGC->Fill(fVariables->At(21),fVariables->At(22));
 
+  fPtNCrossedRowsFit->Fill(fVariables->At(0),fVariables->At(23));
+  fPtNCrossedRowsNClusFFit->Fill(fVariables->At(0),fVariables->At(24));
+
 
 }
 
@@ -1440,6 +1454,62 @@ Float_t AliPWG4HighPtTrackQA::GetTPCClusterInfo(AliAODTrack *tr,Int_t nNeighbour
   return 0;  // undefined type - default value
 }
 
+//_______________________________________________________________________
+Float_t AliPWG4HighPtTrackQA::GetTPCClusterInfoFitMap(AliESDtrack *tr,Int_t nNeighbours/*=3*/, Int_t type/*=0*/, Int_t row0, Int_t row1) const
+{
+  //
+  // TPC cluster information from fit map
+  // type 0: get fraction of found/findable clusters with neighbourhood definition
+  //      1: findable clusters with neighbourhood definition
+  //      2: found clusters
+  //
+  // definition of findable clusters:
+  //            a cluster is defined as findable if there is another cluster
+  //           within +- nNeighbours pad rows. The idea is to overcome threshold
+  //           effects with a very simple algorithm.
+  //
+
+  TBits fTPCFitMap = tr->GetTPCFitMap();
+  if (type==2) return fTPCFitMap.CountBits();
+
+  Int_t found=0;
+  Int_t findable=0;
+  Int_t last=-nNeighbours;
+
+  for (Int_t i=row0; i<row1; ++i){
+    //look to current row
+    if (fTPCFitMap[i]) {
+      last=i;
+      ++found;
+      ++findable;
+      continue;
+    }
+    //look to nNeighbours before
+    if ((i-last)<=nNeighbours) {
+      ++findable;
+      continue;
+    }
+    //look to nNeighbours after
+    for (Int_t j=i+1; j<i+1+nNeighbours; ++j){
+      if (fTPCFitMap[j]){
+        ++findable;
+        break;
+      }
+    }
+  }
+  if (type==1) return findable;
+
+  if (type==0){
+    Float_t fraction=0;
+    if (findable>0)
+      fraction=(Float_t)found/(Float_t)findable;
+    else
+      fraction=0;
+    return fraction;
+  }
+  return 0;  // undefined type - default value
+}
+
 //_______________________________________________________________________
 Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(AliESDtrack *track) {
   //
@@ -1537,34 +1607,6 @@ Float_t AliPWG4HighPtTrackQA::GetGGCChi2(AliESDtrack *origtrack) {
 
 }
 
-//_______________________________________________________________________
-void AliPWG4HighPtTrackQA::FillSystematicCutHist(AliESDtrack *track) {
-
-  fSystTrackCuts->Fill("noCut",1);
-  if(TMath::Abs(track->Eta())>0.9) 
-    fSystTrackCuts->Fill("eta",1);
-  if(track->Pt()<0.15 || track->Pt()>1e10) 
-    fSystTrackCuts->Fill("0.15<pT<1e10",1);
-  if(track->GetKinkIndex(0)>0)
-    fSystTrackCuts->Fill("kink",1);
-  if(track->GetTPCclusters(0)<70)
-    fSystTrackCuts->Fill("NClusterTPC",1);
-  if(track->GetTPCclusters(0)>0.) {
-    if(track->GetTPCchi2()/Float_t(track->GetTPCclusters(0))>4.)
-      fSystTrackCuts->Fill("Chi2PerNClusTPC",1);
-  }
-  
-  Float_t dcaToVertexXY = 0.;
-  Float_t dcaToVertexZ  = 0.;
-  track->GetImpactParameters(dcaToVertexXY,dcaToVertexZ);
-  Float_t fCutMaxDCAToVertexXY = 2.4;
-  Float_t fCutMaxDCAToVertexZ  = 3.2;
-  Float_t dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY/fCutMaxDCAToVertexXY/fCutMaxDCAToVertexXY + dcaToVertexZ*dcaToVertexZ/fCutMaxDCAToVertexZ/fCutMaxDCAToVertexZ);
-  if(dcaToVertex>1.) 
-    fSystTrackCuts->Fill("DCA2D",1);
-  
-}
-
 //________________________________________________________________________
 void AliPWG4HighPtTrackQA::Terminate(Option_t *)
 {
index 5f9ac6bfd884b8437c2273e013c13d427385e462..68edff029940289d33d8d9e3701737c1cbb97675 100644 (file)
@@ -67,8 +67,6 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   void DoAnalysisAOD();
   void FillHistograms();
 
-  void FillSystematicCutHist(AliESDtrack *track);
-
   //Setters
   void SetDataType(DataType d)             {fDataType = d;}
   void SetIsPbPb(Bool_t cs)                {fIsPbPb = cs;}
@@ -86,6 +84,7 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
 
   Float_t GetPtMax()           {return fPtMax;}
   Float_t GetTPCClusterInfo(AliAODTrack *tr,Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const;
+  Float_t GetTPCClusterInfoFitMap(AliESDtrack *tr,Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const;
   Int_t   GetTrackLengthTPC(AliESDtrack *track);
   Int_t   GetTrackLengthTPC(AliAODTrack *track);
   Float_t GetGoldenChi2(AliESDtrack *origtrack);
@@ -120,6 +119,7 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   Int_t fCentClass;               // Select only events from predefined centrality class
 
   /*
+    QA variables stored in TArrayF *fVariables
   0: pt
   1: phi
   2: eta
@@ -133,7 +133,20 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   10: chi2PerClusterTPC
   11: #crossed rows
   12: (#crossed rows)/(#findable clusters)
+  13: SigmaY2
+  14: SigmaZ2
+  15: SigmaSnp2
+  16: SigmaTgl2
+  17: Sigma1Pt2
+  18: NClustersTPCIter1
+  19: TPCChi2Iter1
+  20: NClustersTPCShared
+  21: Chi2Gold (TPC constrained vs global)
+  22: Chi2GGC (global constrained vs global)
+  23: NCrossed rows from fit map
+  24: (#crossed rows)/(#findable clusters) from fit map
   */
+
   Int_t fNVariables;             // Number of variables
   TArrayF *fVariables;           // QA variables
 
@@ -162,6 +175,7 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   TH2F *fPtDCAZ;                               //! Pt vs DCAZ
   TH2F *fPtNClustersTPC;                       //! Pt vs nClustersTPC
   TH2F *fPtNClustersTPCIter1;                  //! Pt vs nClustersTPCIter1
+  TH3F *fPtNClustersTPCIter1Phi;               //! Pt vs nClustersTPCIter1 vs Phi
   TH2F *fPtNClustersTPCShared;                 //! Pt vs nClustersTPCShared
   TH2F *fPtNClustersTPCSharedFrac;             //! Pt vs nClustersTPCSharedFrac
   TH2F *fPtNPointITS;                          //! Pt vs nPointITS
@@ -179,6 +193,8 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   TH2F *fPtNCrossedRows;                       //! Pt vs NCrossedRows
   TH2F *fPtNCrossedRowsNClusF;                 //! Pt vs NCrossedRows/NClusF
   TH3F *fPtNCrRNCrRNClusF;                     //! Pt vs NCrossedRows vs NCrossedRows/NClusF 
+  TH2F *fPtNCrossedRowsFit;                    //! Pt vs NCrossedRows from NClusterFitMap
+  TH2F *fPtNCrossedRowsNClusFFit;              //! Pt vs NCrossedRows/NClusF from NClusterFitMap
 
   TH2F *fPtChi2Gold;                           //! Pt vs Chi2 between global and TPC constrained track
   TH2F *fPtChi2GGC;                            //! Pt vs Chi2 between global and global constrained track
@@ -203,8 +219,6 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   TProfile *fProfPtSigma1Pt;                   //! pT vs sigma(1/Pt)
   TProfile *fProfPtPtSigma1Pt;                 //! pT vs pT*sigma(1/Pt)
 
-  TH1F *fSystTrackCuts;                        //! Bookkeeping for track cuts
-
   TList *fHistList; //! List of Histograms
   
  
index 588bee926c5826c72eea6e22d4865919e6f9053f..8281b486811b1fceef34eecc95b3315617ca3b1a 100644 (file)
@@ -163,7 +163,7 @@ AliAnalysisTaskESDfilter *AddTaskESDFilterPWG4Train(Bool_t useKineFilter=kTRUE,
    esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9); // these tracks are written out as global constrained tracks
    esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4)); // these normal global tracks will be marked as hybrid
 
-   esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as global constrained tracks
+   //     esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as tpc constrained tracks
 
    // Filter with cuts on V0s
    AliESDv0Cuts*   esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
index 57552abf0b6b39c724da48acbe42b8475d41f082..8a533f8c7e1cba1f07c1490c31c38c9329024bcb 100644 (file)
@@ -42,7 +42,7 @@ AliPWG4HighPtSpectra* AddTaskPWG4HighPtSpectra(char *prodType = "LHC10e14", Bool
 {
 
   /*
-    trackType: 0 = global
+   trackType: 0 = global
                1 = TPC stand alone
                2 = TPC stand alone constrained to SPD vertex
     cuts:      0 (global) = standard ITSTPC2010 a la RAA analysis
index 84256090ba6f7c9a0fc3993a6c6d502b41c9e344..0fa1f4edc6f26c5913b9b53b94e8865917435a9c 100644 (file)
@@ -39,6 +39,49 @@ void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE,
 
 }
 
+void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
+{    
+
+  Int_t cent = 10;
+  UInt_t iPhysicsSelectionFlag = AliVEvent::kMB;
+  UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
+  UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
+
+  
+  AliPWG4HighPtTrackQA *taskTrackQA00cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
+  AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
+  AliPWG4HighPtTrackQA *taskTrackQA70cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
+  AliPWG4HighPtTrackQA *taskTrackQA71cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
+  AliPWG4HighPtTrackQA *taskTrackQA72cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
+
+  if(isPbPb) {
+    for(cent=0; cent<4; cent++) {
+      AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
+      AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
+      AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
+      AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
+      AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
+
+      if(cent==0) {
+       AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
+      }
+      else {
+       AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
+       AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
+      }
+
+    }
+  }
+
+}
+
 void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
 {    
 
@@ -56,13 +99,38 @@ void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=
 
 }
 
-void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit) 
+void AddTaskPWG4HighPtTrackQAAllReduced2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
+{    
+
+  int cent = 10;
+
+  UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
+  UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
+
+  AliPWG4HighPtTrackQA *taskTrackQA00C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA01C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA21C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1,iPhysicsSelectionFlagCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA70C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA71C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA72C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
+
+  AliPWG4HighPtTrackQA *taskTrackQA00SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA01SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA21SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1,iPhysicsSelectionFlagSemiCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA70SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA71SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
+  AliPWG4HighPtTrackQA *taskTrackQA72SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
+
+}
+
+
+void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit = 272) 
 {   
   AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0);
   taskTrackQA->SetFilterMask(filterBit);
 }
 
-AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
+AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0, UInt_t iPhysicsSelectionFlag = AliVEvent::kMB)
 {
   /*
     trackType: 0 = global
@@ -192,7 +260,7 @@ AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_
 
 
   //Create the task
-  AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
+  AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%dPSF%d",centClass,trackType,cuts,iPhysicsSelectionFlag));
   taskPWG4TrackQA->SetTrackType(trackType);
   taskPWG4TrackQA->SetCuts(trackCuts);
   taskPWG4TrackQA->SetCutsITSLoose(trackCutsReject);
@@ -211,17 +279,27 @@ AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_
   }
   //  taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
 
-  taskPWG4TrackQA->SelectCollisionCandidates();
+  taskPWG4TrackQA->SelectCollisionCandidates(iPhysicsSelectionFlag);
 
 
   // E. Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
   //==============================================================================
-
   TString outputfile = AliAnalysisManager::GetCommonFileName();
-  outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
-  
-  AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+  if(iPhysicsSelectionFlag == AliVEvent::kMB)
+    outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
+  else if(iPhysicsSelectionFlag == AliVEvent::kCentral)
+    outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts);
+  else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral)
+    outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts);
+
+  AliAnalysisDataContainer *cout_histQAtrack = 0x0;
+  if(iPhysicsSelectionFlag == AliVEvent::kMB)
+    cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+  else if(iPhysicsSelectionFlag == AliVEvent::kCentral)
+    cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+  else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral)
+    cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkSemiCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
 
   mgr->AddTask(taskPWG4TrackQA);
   mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());