]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/ITS/AliAnalysisTaskITSsaTracks.h
MFT track shit tool added
[u/mrichter/AliRoot.git] / PWGPP / ITS / AliAnalysisTaskITSsaTracks.h
1 #ifndef ALIANALYSISTASKITSSATRACKS
2 #define ALIANALYSISTASKITSSATRACKS
3
4 /* Copyright(c) 1998-2012, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //*************************************************************************
8 // Class AliAnalysisTaskITSsaTracks
9 // AliAnalysisTaskSE to extract QA and performance histos for ITS standalone tracks
10 // 
11 //
12 // Authors: L. Milano, milano@to.infn.it
13 //          F. Prino, prino@to.infn.it
14 //          
15 //*************************************************************************
16
17 class TList;
18 class TNtuple;
19 class TH1F;
20 class TH2F;
21 class TTree;
22 class TString;
23 class AliESDEvent;
24 class AliESDfriend;
25 class AliTriggerConfiguration;
26
27 #include "AliAnalysisTaskSE.h"
28
29 class AliAnalysisTaskITSsaTracks : public AliAnalysisTaskSE {
30
31  public:
32   
33   AliAnalysisTaskITSsaTracks();
34   virtual ~AliAnalysisTaskITSsaTracks();
35
36   virtual void   UserExec(Option_t *option);
37   virtual void   UserCreateOutputObjects();
38   virtual void   Terminate(Option_t *option);
39
40   void SetMinITSPoints(Int_t minp=4){
41     fMinITSpts=minp;
42   }
43   void SetMinTPCPoints(Int_t minp=50){
44     fMinTPCpts=minp;
45   }
46   void SetMinSPDPoints(Int_t minp=1){
47     fMinSPDpts=minp;
48   }
49   void SetMinPointsForITSPid(Int_t minp=3){
50     fMinPtsforPid=minp;
51   }
52   void SetITSChi2Cut(Float_t maxchi2=2.5){
53     fMaxITSChi2Clu=maxchi2;
54   }
55
56   void SetPtBins(Int_t n, Double_t* lim);
57
58   void RequirePointInLayer(Int_t iLay){
59     if(iLay<6) fRequirePoint[iLay]=kTRUE;
60   }
61   void RequireInnerSPD(){
62     fRequirePoint[0]=kTRUE;
63   }
64   void RequireBothSPD(){
65     fRequirePoint[0]=kTRUE;
66     fRequirePoint[1]=kTRUE;
67   }
68
69   void SetFillNtuple(Bool_t fill=kTRUE){
70     fFillNtuple=fill;
71   }  
72   void SetReadMC(Bool_t optMC=kTRUE){
73     fReadMC=optMC;
74   }
75   void SetUseMCtruthForPID(Bool_t opt=kTRUE){
76     fUseMCId=opt;
77   }
78
79   void SetUseCentrality(Bool_t usec){
80     fUseCentrality=usec;
81   }
82   void SetCentralityRange(Float_t minc, Float_t maxc){
83     fMinCentrality=minc; fMaxCentrality=maxc; fUseCentrality=kTRUE;
84   }
85   void SetRequireSPDInTriggerCluster(Bool_t opt=kTRUE){
86     fRequireSPD=opt;
87   }
88   void SetRequireSDDInTriggerCluster(Bool_t opt=kTRUE){
89     fRequireSDD=opt;
90   }
91   void SetRequireSSDInTriggerCluster(Bool_t opt=kTRUE){
92     fRequireSSD=opt;
93   }
94
95  private:
96   enum {kPion=0,kKaon,kProton,kNspecies};
97   enum {kTypeTPCITS=0, kTypeITSsa, kTypeITSpureSA, kNtrackTypes};
98   enum {kMaxPtBins=40};
99
100   AliAnalysisTaskITSsaTracks(const AliAnalysisTaskITSsaTracks &source);
101   AliAnalysisTaskITSsaTracks& operator=(const AliAnalysisTaskITSsaTracks &source);
102   
103   TList*  fOutput;          //! list of output histos
104   TH1F*   fHistNEvents;     //! histo with N of events  
105
106   
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
110
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
114
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
119
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
123
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
127
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
131
132
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
136
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
140
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
149
150   TH2F*   fHistOuterLayITSpureSA[kNspecies]; //! outer layer with cluster vs. pt
151
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
160
161   TH2F*   fHistMCPhiResid; //! phi residuals in pt bins
162   TH2F*   fHistPhiResid;   //! phi residuals in pt bins
163   TNtuple* fNtupleTracks;  //! output ntuple
164
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
183
184   ClassDef(AliAnalysisTaskITSsaTracks,5);  
185 };
186
187
188 #endif