1 #ifndef ALIANALYSISTASKITSSATRACKS
2 #define ALIANALYSISTASKITSSATRACKS
4 /* Copyright(c) 1998-2012, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //*************************************************************************
8 // Class AliAnalysisTaskITSsaTracks
9 // AliAnalysisTaskSE to extract QA and performance histos for ITS standalone tracks
12 // Authors: L. Milano, milano@to.infn.it
13 // F. Prino, prino@to.infn.it
15 //*************************************************************************
25 class AliTriggerConfiguration;
27 #include "AliAnalysisTaskSE.h"
29 class AliAnalysisTaskITSsaTracks : public AliAnalysisTaskSE {
33 AliAnalysisTaskITSsaTracks();
34 virtual ~AliAnalysisTaskITSsaTracks();
36 virtual void UserExec(Option_t *option);
37 virtual void UserCreateOutputObjects();
38 virtual void Terminate(Option_t *option);
40 void SetMinITSPoints(Int_t minp=4){
43 void SetMinTPCPoints(Int_t minp=50){
46 void SetMinSPDPoints(Int_t minp=1){
49 void SetMinPointsForITSPid(Int_t minp=3){
52 void SetITSChi2Cut(Float_t maxchi2=2.5){
53 fMaxITSChi2Clu=maxchi2;
56 void SetPtBins(Int_t n, Double_t* lim);
58 void RequirePointInLayer(Int_t iLay){
59 if(iLay<6) fRequirePoint[iLay]=kTRUE;
61 void RequireInnerSPD(){
62 fRequirePoint[0]=kTRUE;
64 void RequireBothSPD(){
65 fRequirePoint[0]=kTRUE;
66 fRequirePoint[1]=kTRUE;
69 void SetFillNtuple(Bool_t fill=kTRUE){
72 void SetReadMC(Bool_t optMC=kTRUE){
75 void SetUseMCtruthForPID(Bool_t opt=kTRUE){
79 void SetUseCentrality(Bool_t usec){
82 void SetCentralityRange(Float_t minc, Float_t maxc){
83 fMinCentrality=minc; fMaxCentrality=maxc; fUseCentrality=kTRUE;
85 void SetRequireSPDInTriggerCluster(Bool_t opt=kTRUE){
88 void SetRequireSDDInTriggerCluster(Bool_t opt=kTRUE){
91 void SetRequireSSDInTriggerCluster(Bool_t opt=kTRUE){
96 enum {kPion=0,kKaon,kProton,kNspecies};
97 enum {kTypeTPCITS=0, kTypeITSsa, kTypeITSpureSA, kNtrackTypes};
100 AliAnalysisTaskITSsaTracks(const AliAnalysisTaskITSsaTracks &source);
101 AliAnalysisTaskITSsaTracks& operator=(const AliAnalysisTaskITSsaTracks &source);
103 TList* fOutput; //! list of output histos
104 TH1F* fHistNEvents; //! histo with N of events
107 TH1F* fHistPt[kNtrackTypes]; //! pt distr., no PID
108 TH1F* fHistPtGood[kNtrackTypes]; //! pt distr. good tracks, no PID
109 TH1F* fHistPtFake[kNtrackTypes]; //! pt distr. fake tracks, no PID
111 TH2F* fHistEtaPhi[kNtrackTypes]; //! etaphi distr., no PID
112 TH2F* fHistEtaPhiGood[kNtrackTypes]; //! etaphi distr. good tracks, no PID
113 TH2F* fHistEtaPhiFake[kNtrackTypes]; //! etaphi distr. fake tracks, no PID
115 TH2F* fHistEtaPhiAny[kNtrackTypes]; //! etaphi distr., no PID, no ITS requirements
116 TH2F* fHistEtaPhi1SPD[kNtrackTypes]; //! etaphi distr., no PID, at least 1 SPD
117 TH2F* fHistEtaPhi4Clu[kNtrackTypes]; //! etaphi distr., no PID, 1SPD+ 3 dEdx
118 TH2F* fHistEtaPhi6Clu[kNtrackTypes]; //! etaphi distr., no PID, 6 Clu
120 TH1F* fHistChi2[kNtrackTypes]; //! chi2 distr., no PID
121 TH1F* fHistChi2Good[kNtrackTypes]; //! chi2 distr., good tracks, no PID
122 TH1F* fHistChi2Fake[kNtrackTypes]; //! chi2 distr., fake tracks, no PID
124 TH1F* fHistNclu[kNtrackTypes]; //! ITS clu distr., no PID
125 TH1F* fHistNcluGood[kNtrackTypes]; //! ITS clu distr., good tracks, no PID
126 TH1F* fHistNcluFake[kNtrackTypes]; //! ITS clu distr., fake tracks, no PID
128 TH2F* fHistdedxvsP2cls[kNtrackTypes]; //! dedx vs. p for tracks with 2 clus in SDD+SSD
129 TH2F* fHistdedxvsP3cls[kNtrackTypes]; //! dedx vs. p for tracks with 3 clus in SDD+SSD
130 TH2F* fHistdedxvsP4cls[kNtrackTypes]; //! dedx vs. p for tracks with 4 clus in SDD+SSD
133 TH1F* fHistPtTPCITS[kNspecies]; //! pt distribution of TPC+ITS tracks
134 TH1F* fHistPtITSsa[kNspecies]; //! pt distribution of ITSsa tracks
135 TH1F* fHistPtITSpureSA[kNspecies]; //! pt distribution of ITS pure SA tracks
137 TH2F* fHistEtaPhiTPCITS[kNspecies]; //! etaphi distr. of TPC+ITS tracks
138 TH2F* fHistEtaPhiITSsa[kNspecies]; //! etaphi distr. of ITSsa tracks
139 TH2F* fHistEtaPhiITSpureSA[kNspecies]; //! etaphi distr. of ITSpureSA tracks
141 TH2F* fHistNcluTPCITS[kNspecies]; //! n. of clusters for TPC+ITS tracks vs. pt
142 TH2F* fHistNcluITSsa[kNspecies]; //! n. of clusters for ITSsa tracks vs. pt
143 TH2F* fHistNcluITSpureSA[kNspecies]; //! n. of clusters for ITSpureSA tracks vs. pt
144 TH2F* fHistd0rphiITSpureSA[kNspecies]; //! d0z for ITSpureSA tracks vs. pt
145 TH2F* fHistd0zITSpureSA[kNspecies]; //! d0z for ITSpureSA tracks vs. pt
146 TH2F* fHistCluInLayTPCITS[kNspecies]; //! TPC+ITS tracks with cluster in layer
147 TH2F* fHistCluInLayITSsa[kNspecies]; //! ITSsa tracks with cluster in layer
148 TH2F* fHistCluInLayITSpureSA[kNspecies]; //! for ITSpureSA tracks with cluster in layer
150 TH2F* fHistOuterLayITSpureSA[kNspecies]; //! outer layer with cluster vs. pt
152 TH2F* fHistPtResid[kNspecies]; //! pt residuals (TPC) in pt bins
153 TH2F* fHistPtRelResid[kNspecies]; //! pt relative residuals (TPC) in pt bins
154 TH2F* fHistInvPtResid[kNspecies]; //! 1/pt residuals (TPC) in pt bins
155 TH2F* fHistInvPtRelResid[kNspecies]; //! 1/pt relative resid. (TPC) in pt bins
156 TH2F* fHistMCPtResid[kNspecies]; //! pt residuals (MC) vs. pt
157 TH2F* fHistMCPtRelResid[kNspecies]; //! pt relative residuals (MC) vs. pt
158 TH2F* fHistMCInvPtResid[kNspecies]; //! 1/pt residuals (MC) vs. pt
159 TH2F* fHistMCInvPtRelResid[kNspecies]; //! 1/pt relative residulas (MC) vs. pt
161 TH2F* fHistMCPhiResid; //! phi residuals in pt bins
162 TH2F* fHistPhiResid; //! phi residuals in pt bins
163 TNtuple* fNtupleTracks; //! output ntuple
165 Int_t fNPtBins; // number of Pt bins
166 Float_t fPtLimits[kMaxPtBins+1]; // Pt bin limits
167 Int_t fMinITSpts; // Minimum number of ITS points per track
168 Int_t fMinSPDpts; // Minimum number of SPD points per track
169 Int_t fMinPtsforPid; // Minimum number of SDD+SSD points per track
170 Int_t fMinTPCpts; // Minimum number of TPC points per track
171 Float_t fMaxITSChi2Clu; // Maximum value of ITS chi2 per cluster
172 Float_t fMinCentrality; // Centrality percentile lower lim
173 Float_t fMaxCentrality; // Centrality percentile upper lim
174 Bool_t fRequirePoint[6]; // require point in given layer
175 Bool_t fFillNtuple; // flag to control fill of ntuple
176 Bool_t fReadMC; // flag read/not-read MC truth info
177 Bool_t fUseMCId; // flag use/not-use MC identity for PID
178 Bool_t fUseCentrality; // flag use/not-use centrality selection
179 Bool_t fRequireSPD; // check that SPD are in trigger cluster
180 Bool_t fRequireSDD; // check that SDD are in trigger cluster
181 Bool_t fRequireSSD; // check that SSD are in trigger cluster
182 AliTriggerConfiguration* fTrigConfig; // trigger configuration object
184 ClassDef(AliAnalysisTaskITSsaTracks,5);