]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
addedd new histos for cosmics
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Mar 2010 20:11:09 +0000 (20:11 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Mar 2010 20:11:09 +0000 (20:11 +0000)
PWG4/JetTasks/AliPWG4HighPtQATPConly.cxx
PWG4/JetTasks/AliPWG4HighPtQATPConly.h
PWG4/JetTasks/AliPWG4HighPtSpectra.cxx
PWG4/macros/AddTaskPWG4HighPtQATPConly.C

index 4ec74f6a1b668d79d6f5704e5c93389ce4bd3223..41d7e571f5b6d9639551475a3704ef4746067516 100644 (file)
@@ -64,13 +64,13 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPt
   fMC(0),
   fTrackCuts(0), 
   fTrackCutsITS(0),
-  fTrigger(0),
   fNEventAll(0),
   fNEventSel(0),
   fPtAll(0),
   fPtSel(0),
   fPtAllminPtTPCvsPtAll(0),
   fPtAllminPtTPCvsPtAllNPointTPC(0),
+  fPtAllminPtTPCvsPtAllNPointTPCS(0),
   fPtAllminPtTPCvsPtAllDCAR(0),
   fPtAllminPtTPCvsPtAllDCAZ(0),
   fPtAllminPtTPCvsPtAllPhi(0),
@@ -84,6 +84,7 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPt
   fPtSelITSouter(0),
   fPtITSouterminPtTPCvsPtAll(0),
   fPtITSouterminPtTPCvsPtAllNPointTPC(0),
+  fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
   fPtITSouterminPtTPCvsPtAllDCAR(0),
   fPtITSouterminPtTPCvsPtAllDCAZ(0),
   fPtITSouterminPtTPCvsPtAllPhi(0),
@@ -119,6 +120,7 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPt
   fPtSelITS(0),
   fPtITSminPtTPCvsPtITS(0),
   fPtITSminPtTPCvsPtITSNPointTPC(0),
+  fPtITSminPtTPCvsPtITSNPointTPCS(0),
   fPtITSminPtTPCvsPtITSDCAR(0),
   fPtITSminPtTPCvsPtITSDCAZ(0),
   fPtITSminPtTPCvsPtITSPhi(0),
@@ -128,9 +130,16 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPt
   fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
   fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
   fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
-  fPtOuterPtInner(0),
   fPtRel1PtUncertaintyChi2PerClusTPC(0),
-  fHistListITS(0)
+  fPtNPointTPCSChi2PerClusTPC(0),
+  fPtNPointTPCSRel1PtUncertainty(0),
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel(0),
+  fHistListITS(0),
+  fPtCosmicCandidates(0),
+  fDeltaPtCosmicCandidates(0),
+  fDeltaPhi(0),
+  fDeltaEta(0),
+  fHistListCosmics(0)
 {
 
 }
@@ -142,13 +151,13 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
   fMC(0),
   fTrackCuts(),
   fTrackCutsITS(),
-  fTrigger(0),
   fNEventAll(0),
   fNEventSel(0),
   fPtAll(0),
   fPtSel(0),
   fPtAllminPtTPCvsPtAll(0),
   fPtAllminPtTPCvsPtAllNPointTPC(0),
+  fPtAllminPtTPCvsPtAllNPointTPCS(0),
   fPtAllminPtTPCvsPtAllDCAR(0),
   fPtAllminPtTPCvsPtAllDCAZ(0),
   fPtAllminPtTPCvsPtAllPhi(0),
@@ -162,6 +171,7 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
   fPtSelITSouter(0),
   fPtITSouterminPtTPCvsPtAll(0),
   fPtITSouterminPtTPCvsPtAllNPointTPC(0),
+  fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
   fPtITSouterminPtTPCvsPtAllDCAR(0),
   fPtITSouterminPtTPCvsPtAllDCAZ(0),
   fPtITSouterminPtTPCvsPtAllPhi(0),
@@ -197,6 +207,7 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
   fPtSelITS(0),
   fPtITSminPtTPCvsPtITS(0),
   fPtITSminPtTPCvsPtITSNPointTPC(0),
+  fPtITSminPtTPCvsPtITSNPointTPCS(0),
   fPtITSminPtTPCvsPtITSDCAR(0),
   fPtITSminPtTPCvsPtITSDCAZ(0),
   fPtITSminPtTPCvsPtITSPhi(0),
@@ -206,9 +217,16 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
   fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
   fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
   fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
-  fPtOuterPtInner(0),
   fPtRel1PtUncertaintyChi2PerClusTPC(0),
-  fHistListITS(0)
+  fPtNPointTPCSChi2PerClusTPC(0),
+  fPtNPointTPCSRel1PtUncertainty(0),
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel(0),
+  fHistListITS(0),
+  fPtCosmicCandidates(0),
+  fDeltaPtCosmicCandidates(0),
+  fDeltaPhi(0),
+  fDeltaEta(0),
+  fHistListCosmics(0)
 {
   //
   // Constructor. Initialization of Inputs and Outputs
@@ -222,6 +240,8 @@ AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
   DefineOutput(1, TList::Class());
   // Output slot #2 writes into a TList
   DefineOutput(2, TList::Class());
+  // Output slot #3 writes into a TList
+  DefineOutput(3, TList::Class());
 }
 
 //________________________________________________________________________
@@ -283,6 +303,9 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fHistListTPC = new TList();
   OpenFile(2);
   fHistListITS = new TList();
+  OpenFile(3);
+  fHistListCosmics = new TList();
+
 
   Int_t fgkNPhiBins=18;
   Float_t kMinPhi = 0.;
@@ -295,7 +318,7 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   Float_t fgkChi2PerClusMin = 0.;
   Float_t fgkChi2PerClusMax = 3.5;
   Int_t fgkChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
-
+  
 
   Int_t fgkResPtBins=80;
 
@@ -307,7 +330,7 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fHistList->Add(fPtAll);
   fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
   fHistList->Add(fPtSel);
-  
   fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
   fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
   fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
@@ -319,6 +342,12 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
   fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
 
+  fPtAllminPtTPCvsPtAllNPointTPCS = new TH3F("fPtAllminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
+  fPtAllminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
+  fPtAllminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
+  fPtAllminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
+  fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPCS);
+
   fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
   fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
   fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
@@ -364,13 +393,13 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtAllminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
   fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
   fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
-  fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/NClusTPC");
+  fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
   fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
 
   fPtAllminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
   fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
   fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
-  fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/NClusITS");
+  fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
   fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
 
   fEtaPhiOutliers = new TH2F("fEtaPhiOutliers","PtAllminPtTPCvsPtAll",20, -1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
@@ -393,6 +422,12 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtITSouterminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPC);
 
+  fPtITSouterminPtTPCvsPtAllNPointTPCS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
+  fPtITSouterminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
+  fPtITSouterminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
+  fPtITSouterminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
+  fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPCS);
+
   fPtITSouterminPtTPCvsPtAllDCAR = new TH3F("fPtITSouterminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
   fPtITSouterminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
@@ -438,13 +473,13 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
-  fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/NClusTPC");
+  fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC);
 
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
-  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/NClusITS");
+  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
 
   //As function of ITS layers
@@ -533,19 +568,19 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSPD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
-  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetZTitle("#chi^{2}/NPointITS");
+  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD);
 
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSDD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
-  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetZTitle("#chi^{2}/NPointITS");
+  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD);
 
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSSD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetXTitle("p_{t}^{Global}");
   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
-  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetZTitle("#chi^{2}/NPointITS");
+  fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD);
 
 
@@ -554,81 +589,100 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fHistListITS->Add(fPtSelITS);
   
   fPtITSminPtTPCvsPtITS = new TH2F("fPtITSminPtTPCvsPtITS","PtITSminPtTPCvsPtITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
-  fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
+  fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fHistListITS->Add(fPtITSminPtTPCvsPtITS);
   
   fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
-  fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{ITSrefit}");
-  fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{ITSrefit}-1/p_{t}^{TPC})/(1/p_{t}^{ITSrefit})");
+  fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
-    
+
+  fPtITSminPtTPCvsPtITSNPointTPCS = new TH3F("fPtITSminPtTPCvsPtITSNPointTPCS","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
+  fPtITSminPtTPCvsPtITSNPointTPCS->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
+  fPtITSminPtTPCvsPtITSNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
+  fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPCS);    
+
   fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
-  fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{ITSrefit}");
-  fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{ITSrefit}-1/p_{t}^{TPC})/(1/p_{t}^{ITSrefit})");
+  fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
   
   fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
-  fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{ITSrefit}");
-  fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{ITSrefit}-1/p_{t}^{TPC})/(1/p_{t}^{ITSrefit})");
+  fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
   
   fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
-  fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{ITSrefit}");
-  fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{ITSrefit}-1/p_{t}^{TPC})/(1/p_{t}^{ITSrefit})");
+  fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
   
   fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
-  fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{ITSrefit}");
-  fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{ITSrefit}-1/p_{t}^{TPC})/(1/p_{t}^{ITSrefit})");
+  fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS); 
   
   fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
-  fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
+  fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
 
   fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
-  fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
+  fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
 
   fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
-  fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
+  fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
   fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
 
   fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
-  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
-  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/NClusTPC");
+  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
+  fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
 
   fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
-  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{ITS}");
-  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{ITS}-1/p_{t}^{TPC})/(1/p_{t}^{ITS})");
-  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/NClusITS");
+  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
+  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
+  fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
 
-  fPtOuterPtInner = new TH2F("fPtOuterPtInner","fPtOuterPtInner",fgkNPtBins, fgkPtMin,fgkPtMax,fgkNPtBins, fgkPtMin,fgkPtMax);
-  fPtOuterPtInner->SetXTitle("p_{t}^{inner}");
-  fPtOuterPtInner->SetYTitle("p_{t}^{outer}");
-  fHistListITS->Add(fPtOuterPtInner);
-
   fPtRel1PtUncertaintyChi2PerClusTPC = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
   fPtRel1PtUncertaintyChi2PerClusTPC->SetXTitle("p_{t}^{global}");
   fPtRel1PtUncertaintyChi2PerClusTPC->SetYTitle("Rel1PtUncertainty");
-  fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/N_{clusters}^{TPC}");
+  fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
   fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
 
+  fPtNPointTPCSChi2PerClusTPC = new TH3F("fPtNPointTPCSChi2PerClusTPC","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,35,0.,3.5);
+  fPtNPointTPCSChi2PerClusTPC->SetXTitle("p_{t}^{global}");
+  fPtNPointTPCSChi2PerClusTPC->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
+  fPtNPointTPCSChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
+  fHistListITS->Add(fPtNPointTPCSChi2PerClusTPC);
+
+  fPtNPointTPCSRel1PtUncertainty = new TH3F("fPtNPointTPCSRel1PtUncertainty","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,30,0.,0.3);
+  fPtNPointTPCSRel1PtUncertainty->SetXTitle("p_{t}^{global}");
+  fPtNPointTPCSRel1PtUncertainty->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
+  fPtNPointTPCSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
+  fHistListITS->Add(fPtNPointTPCSRel1PtUncertainty);
+
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetXTitle("p_{t}^{global}");
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetYTitle("Rel1PtUncertainty");
+  fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
+  fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel);
+
   fPtAllTPC = new TH1F("fPtAllTPC","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
   fHistListTPC->Add(fPtAllTPC);
   fPtSelTPC = new TH1F("fPtSelTPC","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
@@ -636,6 +690,18 @@ void AliPWG4HighPtQATPConly::CreateOutputObjects() {
   fPtSelTPCITS = new TH1F("fPtSelTPCITS","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
   fHistListTPC->Add(fPtSelTPCITS);
 
+  //****************************************************************************************************************//
+  //                                              Cosmic Candidates                                                 //
+  //****************************************************************************************************************//
+  fPtCosmicCandidates = new TH1F("fPtCosmicCandidates","fPtCosmicCandidates",fgkNPtBins, fgkPtMin, fgkPtMax);
+  fHistListCosmics->Add(fPtCosmicCandidates);  
+  fDeltaPtCosmicCandidates = new TH1F("fDeltaPtCosmicCandidates","fDeltaPtCosmicCandidates",fgkNPtBins, -50., 50.);
+  fHistListCosmics->Add(fDeltaPtCosmicCandidates);  
+  fDeltaPhi = new TH1F("fDeltaPhi","fDeltaPhi",fgkNPhiBins*2,-1*kMaxPhi,kMaxPhi);
+  fHistListCosmics->Add(fDeltaPhi);  
+  fDeltaEta = new TH1F("fDeltaEta","fDeltaEta",20, -2.,2.);
+  fHistListCosmics->Add(fDeltaEta);  
+
   TH1::AddDirectory(oldStatus);   
 
 }
@@ -654,6 +720,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
      PostData(0, fHistList);
      PostData(1, fHistListTPC);
      PostData(2, fHistListITS);
+     PostData(3, fHistListCosmics);
     return;
   }
 
@@ -664,6 +731,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
      PostData(0, fHistList);
      PostData(1, fHistListTPC);
      PostData(2, fHistListITS);
+     PostData(3, fHistListCosmics);
     return;
   }
 
@@ -674,6 +742,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
      PostData(0, fHistList);
      PostData(1, fHistListTPC);
      PostData(2, fHistListITS);
+     PostData(3, fHistListCosmics);
     return;
   }
 
@@ -690,6 +759,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
       PostData(0, fHistList);
       PostData(1, fHistListTPC);
       PostData(2, fHistListITS);
+      PostData(3, fHistListCosmics);
       return;
     }
     
@@ -708,6 +778,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
     PostData(0, fHistList);
     PostData(1, fHistListTPC);
     PostData(2, fHistListITS);
+    PostData(3, fHistListCosmics);
     return;
   }
 
@@ -720,6 +791,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
     PostData(0, fHistList);
     PostData(1, fHistListTPC);
     PostData(2, fHistListITS);
+    PostData(3, fHistListCosmics);
     return;
   }
   if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2){ 
@@ -727,6 +799,7 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
     PostData(0, fHistList);
     PostData(1, fHistListTPC);
     PostData(2, fHistListITS);
+    PostData(3, fHistListCosmics);
     return;
   }
   Int_t nTracks = fESD->GetNumberOfTracks();
@@ -774,14 +847,20 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
 
     fPtAll->Fill(pt);
     fPtAllTPC->Fill(ptTPC);
-    
+
+
     if (fTrackCuts->AcceptTrack(track)) {
 
+      Bool_t cosmic = kFALSE;    
+      if(pt>6.) { cosmic = IsCosmic(track,iTrack,6.); }
+      //    if(cosmic) continue;
+
       fPtSel->Fill(pt);
       fPtSelTPC->Fill(ptTPC);
       if(ptTPC==0. || pt==0.) continue;
       fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
-      fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCNcls());
+      fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
+      if(nClustersTPC>0.) fPtAllminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
       fPtAllminPtTPCvsPtAllDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
       fPtAllminPtTPCvsPtAllDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
       fPtAllminPtTPCvsPtAllPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
@@ -798,7 +877,8 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
        if(ptITSouter==0.) continue;
        fPtSelITSouter->Fill(ptITSouter);
        fPtITSouterminPtTPCvsPtAll->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter) );
-       fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),track->GetTPCNcls());
+       fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nClustersTPC);
+       if(nClustersTPC>0.) fPtITSouterminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),track->GetTPCnclsS()/nClustersTPC);
        fPtITSouterminPtTPCvsPtAllDCAR->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dca2D);
        fPtITSouterminPtTPCvsPtAllDCAZ->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dcaZ);
        fPtITSouterminPtTPCvsPtAllPhi->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),phi);
@@ -856,7 +936,8 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
       fPtSelITS->Fill(pt);
       fPtSelTPCITS->Fill(ptTPC);
       fPtITSminPtTPCvsPtITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
-      fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCNcls());
+      fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
+      if(nClustersTPC>0.) fPtITSminPtTPCvsPtITSNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
       fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
       fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
       fPtITSminPtTPCvsPtITSPhi->Fill(pt,(pt-ptTPC)/(pt),phi);
@@ -864,10 +945,13 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
       fPtITSminPtTPCvsPtITSNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
       fPtITSminPtTPCvsPtITSChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
       fPtITSminPtTPCvsPtITSRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
-      //      fPtOuterPtInner->Fill(trackInner->Pt(),trackOuter->Pt());
-      fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
       fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
       if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
+
+      fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
+      fPtNPointTPCSChi2PerClusTPC->Fill(pt,track->GetTPCnclsS()/nClustersTPC,chi2PerClusterTPC);
+      fPtNPointTPCSRel1PtUncertainty->Fill(pt,track->GetTPCnclsS()/nClustersTPC,relUncertainty1Pt);
+      if(track->GetTPCnclsS()/nClustersTPC>0.05) fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
     }//fTrackCutsITS loop
       
   }//ESD track loop
@@ -876,8 +960,51 @@ void AliPWG4HighPtQATPConly::Exec(Option_t *) {
   PostData(0, fHistList);
   PostData(1, fHistListTPC);
   PostData(2, fHistListITS);
+  PostData(3, fHistListCosmics);
+
+}
+//________________________________________________________________________
+Bool_t AliPWG4HighPtQATPConly::IsCosmic(const AliESDtrack *track1 , Int_t trackNumber, Double_t ptMin)
+{
+  Bool_t candidate = kFALSE;
+  Bool_t candidate2 = kFALSE;
+  if(!track1) return candidate;
+
+  Int_t nTracks = fESD->GetNumberOfTracks();
+  for (Int_t iTrack = trackNumber+1; iTrack < nTracks; iTrack++) {
+    candidate2 = kFALSE;
+    AliESDtrack *track2 = fESD->GetTrack(iTrack);
+    if(!track2) continue;
+    if(!(fTrackCuts->AcceptTrack(track2))) continue;
+    if(track2->Pt()<ptMin) continue;
+    
+    //Check if same charge
+    if( (track1->GetSign()*track2->GetSign()) < 0. ) continue;
+    
+    //Check if back-to-back
+    Double_t mom1[3],mom2[3];
+    track1->GetPxPyPz(mom1);
+    track2->GetPxPyPz(mom2);
+    Double_t cosTheta = (mom1[0]*mom2[0]+mom1[1]*mom2[1]+mom1[2]*mom2[2])/( TMath::Sqrt(mom1[0]*mom1[0]+mom1[1]*mom1[1]+mom1[2]*mom1[2])*TMath::Sqrt(mom2[0]*mom2[0]+mom2[1]*mom2[1]+mom2[2]*mom2[2]) );
+    Double_t theta = TMath::ACos(cosTheta);
+    if(TMath::Abs(TMath::Pi()-theta)<fMaxCosmicAngle) { candidate = kTRUE; candidate2 = kTRUE;}
+
+    if(candidate2) {
+      fDeltaPtCosmicCandidates->Fill(track1->Pt()-track2->Pt());
+      fDeltaPhi->Fill(track1->Phi()-track2->Phi());
+      fDeltaPhi->Fill(track1->Eta()-track2->Eta());
+    }
 
+  }
+
+  if(candidate) {
+    fPtCosmicCandidates->Fill(track1->Pt());
+  }
+
+   return candidate;
 }
+
 //________________________________________________________________________
 void AliPWG4HighPtQATPConly::Terminate(Option_t *)
 {
index 101ee0e7315b510bb37cf9f0c1af40aa9085eb35..60a0fb8bbb284501e291ecdedabdc331acc32119 100644 (file)
@@ -33,6 +33,7 @@ class AliESDfriendTrack;
 class AliMCEvent;
 class AliVEvent;
 class AliESDtrackCuts;
+class AliESDtrack;
 
 class AliPWG4HighPtQATPConly: public AliAnalysisTask {
 
@@ -44,12 +45,12 @@ class AliPWG4HighPtQATPConly: public AliAnalysisTask {
   virtual void   ConnectInputData(Option_t *);
   virtual void   CreateOutputObjects();
   virtual void   Exec(Option_t *option);
+  Bool_t IsCosmic(const AliESDtrack* track1 = 0x0, Int_t trackNumber = 0, Double_t ptMin = 6.);
   virtual void   Terminate(Option_t *);
 
   void SetCuts(AliESDtrackCuts* trackCuts) {fTrackCuts = trackCuts;}
   void SetCutsITS(AliESDtrackCuts* trackCutsITS) {fTrackCutsITS = trackCutsITS;}
-  //Select the trigger
-  void SelectTrigger(Int_t trig) { fTrigger = trig; } 
+  void SetMaxCosmicAngle(Double_t angle) {fMaxCosmicAngle = angle;}
 
  protected:
 
@@ -64,14 +65,16 @@ class AliPWG4HighPtQATPConly: public AliAnalysisTask {
   AliMCEvent *fMC;                //! MC event object
   AliESDtrackCuts *fTrackCuts;    // TrackCuts for global vs TPConly comparison
   AliESDtrackCuts *fTrackCutsITS; // TrackCuts including ITSrefit
-  Int_t fTrigger;                 //Trigger flag as defined in AliAnalysisHelperJetTasks.h 
   
+  Double_t fMaxCosmicAngle;       // Max deviation from pi (angle between two tracks) in case of cosmic candidate
+
   TH1F *fNEventAll;                             //! Event counter
   TH1F *fNEventSel;                             //! Event counter: Selected events for analysis
   TH1F *fPtAll;                                 //! Pt spectrum all charged particles
   TH1F *fPtSel;                                 //! Pt spectrum all selected charged particles by fTrackCuts
   TH2F *fPtAllminPtTPCvsPtAll;                  //! Momentum resolution (global vs TPConly)
   TH3F *fPtAllminPtTPCvsPtAllNPointTPC;         //! Momentum resolution vs NPointTPC
+  TH3F *fPtAllminPtTPCvsPtAllNPointTPCS;        //! Momentum resolution vs NPointTPCShared/NPointTPC
   TH3F *fPtAllminPtTPCvsPtAllDCAR;              //! Momentum resolution vs DCAR
   TH3F *fPtAllminPtTPCvsPtAllDCAZ;              //! Momentum resolution vs DCAZ
   TH3F *fPtAllminPtTPCvsPtAllPhi;               //! Momentum resolution vs Phi
@@ -81,11 +84,13 @@ class AliPWG4HighPtQATPConly: public AliAnalysisTask {
   TH3F *fPtAllminPtTPCvsPtAllRel1PtUncertainty; //! Momentum resolution vs relUncertainty1Pt
   TH3F *fPtAllminPtTPCvsPtAllChi2PerNClusTPC;   //! Momentum resolution vs Chi2PerNClusTPC
   TH3F *fPtAllminPtTPCvsPtAllChi2PerNClusITS;   //! Momentum resolution vs Chi2PerNClusITS
+
   TH2F *fEtaPhiOutliers;                        //! Eta Phi for outliers in momentum resolution
-  //    fPtAllminPtTPCvsPtAllChi2PerNClusITS'
   TH1F *fPtSelITSouter;                         //! Pt at ITS outer wall for all selected charged particles by fTrackCuts
   TH2F *fPtITSouterminPtTPCvsPtAll;                  //! Momentum resolution (global vs ITSouter-TPCinner)
   TH3F *fPtITSouterminPtTPCvsPtAllNPointTPC;         //! Momentum resolution vs NPointTPC
+  TH3F *fPtITSouterminPtTPCvsPtAllNPointTPCS;        //! Momentum resolution vs NPointTPCS
   TH3F *fPtITSouterminPtTPCvsPtAllDCAR;              //! Momentum resolution vs DCAR
   TH3F *fPtITSouterminPtTPCvsPtAllDCAZ;              //! Momentum resolution vs DCAZ
   TH3F *fPtITSouterminPtTPCvsPtAllPhi;               //! Momentum resolution vs Phi
@@ -128,6 +133,7 @@ class AliPWG4HighPtQATPConly: public AliAnalysisTask {
   TH1F *fPtSelITS;                              //! Pt spectrum all selected charged particles by fTrackCutsITS
   TH2F *fPtITSminPtTPCvsPtITS;                  //! Momentum resolution (global with ITSrefit vs TPConly)
   TH3F *fPtITSminPtTPCvsPtITSNPointTPC;         //! Momentum resolution vs NPointTPC 
+  TH3F *fPtITSminPtTPCvsPtITSNPointTPCS;        //! Momentum resolution vs NPointTPCS 
   TH3F *fPtITSminPtTPCvsPtITSDCAR;              //! Momentum resolution vs DCAR
   TH3F *fPtITSminPtTPCvsPtITSDCAZ;              //! Momentum resolution vs DCAZ
   TH3F *fPtITSminPtTPCvsPtITSPhi;               //! Momentum resolution vs Phi
@@ -138,11 +144,20 @@ class AliPWG4HighPtQATPConly: public AliAnalysisTask {
   TH3F *fPtITSminPtTPCvsPtITSChi2PerNClusTPC;   //! Momentum resolution vs Chi2PerNClusTPC
   TH3F *fPtITSminPtTPCvsPtITSChi2PerNClusITS;  //! Momentum resolution vs Chi2PerNClusITS
 
-  TH2F *fPtOuterPtInner;                        //! Momentum of global track at inner wall versus outer wall of TPC
   TH3F *fPtRel1PtUncertaintyChi2PerClusTPC;     //! Global Pt vs relUncertainty1Pt vs Chi2PerClusTPC
+  TH3F *fPtNPointTPCSChi2PerClusTPC;            //! Global Pt vs NPointTPCShared/NPointTPC vs Chi2PerClusTPC
+  TH3F *fPtNPointTPCSRel1PtUncertainty;         //! Global Pt vs NPointTPCShared/NPointTPC vs relUncertainty1Pt
+  TH3F *fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel;     //! Global Pt vs relUncertainty1Pt vs Chi2PerClusTPC for NPointTPCShared/NPointTPC>0.05
 
   TList *fHistListITS; //! List of Histograms
 
+  TH1F *fPtCosmicCandidates;                    //! Cosmic Candidates
+  TH1F *fDeltaPtCosmicCandidates;               //! Cosmic Candidates Delta Pt
+  TH1F *fDeltaPhi;                              //! Cosmic Candidates Delta Phi
+  TH1F *fDeltaEta;                              //! Cosmic Candidates Delta Eta
+
+  TList *fHistListCosmics;                      //! List of Histograms for cosmic candidates
+
   ClassDef(AliPWG4HighPtQATPConly,1) 
   
 };
index 56fd819e6415d00bd758eba1580f75b46f093a2f..e0add9661df035e211056ddf53b77cfbaa806717 100644 (file)
 #include "TH3.h"
 #include "TList.h"
 #include "TChain.h"
-#include "TH3F.h"
 
 #include "AliAnalysisManager.h"
 #include "AliESDInputHandler.h"
 #include "AliESDtrack.h"
 #include "AliESDtrackCuts.h"
 #include "AliExternalTrackParam.h"
+
 #include "AliLog.h"
 
 #include "AliStack.h"
 #include "TParticle.h"
-#include "TH1I.h"
 #include "AliMCEvent.h"
 #include "AliMCEventHandler.h"
 #include "AliCFContainer.h"
@@ -317,6 +316,7 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
          Int_t label = TMath::Abs(track->GetLabel());
          TParticle *particle = stack->Particle(label) ;
          if(!particle) continue;
+
          containerInputMC[0] = particle->Pt();      
          containerInputMC[1] = particle->Phi();      
          containerInputMC[2] = particle->Eta();  
@@ -345,7 +345,7 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
     }
   
 
-  
+  //Fill MC containters if particles are findable
   if(eventHandler) {
     for(int iPart = 1; iPart<(mcEvent->GetNumberOfTracks()); iPart++)//stack->GetNprimary();
       {
@@ -360,19 +360,18 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
        containerInputMC[4] = 0.0;
 
        int counter;
-
+       Float_t trackLengthTPC = 0.;
        if(mcPart->Charge()>0. && fCFManagerPos->CheckParticleCuts(3,mcPart)) {
-         Float_t trackLengthTPC = mcPart->GetTPCTrackLength(fESD->GetMagneticField(),0.1,counter,3.0);
-         if(trackLengthTPC>80.) fCFManagerPos->GetParticleContainer()->Fill(containerInputMC,kStepMCtrackable) ;
+         trackLengthTPC = mcPart->GetTPCTrackLength(fESD->GetMagneticField(),0.1,counter,3.0);
+         if(trackLengthTPC > (float)fTrackCuts->GetMinNClusterTPC()) fCFManagerPos->GetParticleContainer()->Fill(containerInputMC,kStepMCtrackable) ;
        }
        if(mcPart->Charge()<0. && fCFManagerNeg->CheckParticleCuts(3,mcPart)) {
-         Float_t trackLengthTPC = mcPart->GetTPCTrackLength(fESD->GetMagneticField(),0.1,counter,3.0);
-         if(trackLengthTPC>80.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepMCtrackable) ;
+         trackLengthTPC = mcPart->GetTPCTrackLength(fESD->GetMagneticField(),0.1,counter,3.0);
+         if(trackLengthTPC > (float)fTrackCuts->GetMinNClusterTPC()) fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepMCtrackable) ;
        }
       }
   }
   
-   
   PostData(0,fHistList);
   PostData(1,fCFManagerPos->GetParticleContainer());
   PostData(2,fCFManagerNeg->GetParticleContainer());
index 12791644dc48fef2d5a923b243e3412521442673..ed82a6d940b89e879e12949615fd531c0b748b59 100644 (file)
@@ -58,6 +58,7 @@ AliPWG4HighPtQATPConly* AddTaskPWG4HighPtQATPConly()//<some_parameters>)
   AliPWG4HighPtQATPConly *taskPWG4QA = new AliPWG4HighPtQATPConly("AliPWG4HighPtQATPConly");
   taskPWG4QA->SetCuts(trackCuts);
   taskPWG4QA->SetCutsITS(trackCutsITS);
+  taskPWG4QA->SetMaxCosmicAngle(0.008);
   
  
   // E. Create ONLY the output containers for the data produced by the task.
@@ -72,7 +73,7 @@ AliPWG4HighPtQATPConly* AddTaskPWG4HighPtQATPConly()//<some_parameters>)
   AliAnalysisDataContainer *cout_hist0 = mgr->CreateContainer("qa_hists", TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
   AliAnalysisDataContainer *cout_hist1 = mgr->CreateContainer("qa_histsTPC", TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
   AliAnalysisDataContainer *cout_hist2 = mgr->CreateContainer("qa_histsITS", TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);  
-
+  AliAnalysisDataContainer *cout_hist3 = mgr->CreateContainer("qa_histsCosmics", TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);  
  
   mgr->AddTask(taskPWG4QA);
 
@@ -80,6 +81,7 @@ AliPWG4HighPtQATPConly* AddTaskPWG4HighPtQATPConly()//<some_parameters>)
   mgr->ConnectOutput(taskPWG4QA,0,cout_hist0);
   mgr->ConnectOutput(taskPWG4QA,1,cout_hist1);
   mgr->ConnectOutput(taskPWG4QA,2,cout_hist2);
+  mgr->ConnectOutput(taskPWG4QA,3,cout_hist3);
 
   // Return task pointer at the end
   return taskPWG4QA;