]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/ITS/AliAnalysisTaskITSsaTracks.h
Moving PWG1 to PWGPP
[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
26 #include "AliAnalysisTaskSE.h"
27
28 class AliAnalysisTaskITSsaTracks : public AliAnalysisTaskSE {
29
30  public:
31   
32   AliAnalysisTaskITSsaTracks();
33   virtual ~AliAnalysisTaskITSsaTracks();
34
35   virtual void   UserExec(Option_t *option);
36   virtual void   UserCreateOutputObjects();
37   virtual void   Terminate(Option_t *option);
38
39   void SetMinITSPoints(Int_t minp=4){
40     fMinITSpts=minp;
41   }
42   void SetMinTPCPoints(Int_t minp=50){
43     fMinTPCpts=minp;
44   }
45   void SetMinSPDPoints(Int_t minp=1){
46     fMinSPDpts=minp;
47   }
48   void SetMinPointsForITSPid(Int_t minp=3){
49     fMinPtsforPid=minp;
50   }
51   void SetITChi2Cut(Float_t maxchi2=2.5){
52     fMaxITSChi2Clu=maxchi2;
53   }
54
55   void SetPtBins(Int_t n, Double_t* lim);
56
57   void RequirePointInLayer(Int_t iLay){
58     if(iLay<6) fRequirePoint[iLay]=kTRUE;
59   }
60   void RequireInnerSPD(){
61     fRequirePoint[0]=kTRUE;
62   }
63   void RequireBothSPD(){
64     fRequirePoint[0]=kTRUE;
65     fRequirePoint[1]=kTRUE;
66   }
67
68   void SetFillNtuple(Bool_t fill=kTRUE){
69     fFillNtuple=fill;
70   }  
71   void SetReadMC(Bool_t optMC=kTRUE){
72     fReadMC=optMC;
73   }
74   void SetUseMCtruthForPID(Bool_t opt=kTRUE){
75     fUseMCId=opt;
76   }
77
78
79  private:
80   enum {kPion=0,kKaon,kProton,kNspecies};
81   enum {kTypeTPCITS=0, kTypeITSsa, kTypeITSpureSA, kNtrackTypes};
82   enum {kMaxPtBins=40};
83
84   AliAnalysisTaskITSsaTracks(const AliAnalysisTaskITSsaTracks &source);
85   AliAnalysisTaskITSsaTracks& operator=(const AliAnalysisTaskITSsaTracks &source);
86   
87   TList*  fOutput;          //! list of output histos
88   TH1F*   fHistNEvents;     //! histo with N of events  
89
90   
91   TH1F*   fHistPt[kNtrackTypes];          //! pt distr., no PID
92   TH1F*   fHistPtGood[kNtrackTypes];      //! pt distr. good tracks, no PID
93   TH1F*   fHistPtFake[kNtrackTypes];      //! pt distr. fake tracks, no PID
94
95   TH2F*   fHistEtaPhi[kNtrackTypes];      //! etaphi distr., no PID
96   TH2F*   fHistEtaPhiGood[kNtrackTypes];  //! etaphi distr. good tracks, no PID
97   TH2F*   fHistEtaPhiFake[kNtrackTypes];  //! etaphi distr. fake tracks, no PID
98
99   TH2F*   fHistEtaPhiAny[kNtrackTypes];   //! etaphi distr., no PID, no ITS requirements
100   TH2F*   fHistEtaPhi1SPD[kNtrackTypes];  //! etaphi distr., no PID, at least 1 SPD
101   TH2F*   fHistEtaPhi4Clu[kNtrackTypes];  //! etaphi distr., no PID, 1SPD+ 3 dEdx
102   TH2F*   fHistEtaPhi6Clu[kNtrackTypes];  //! etaphi distr., no PID, 6 Clu
103
104   TH1F*   fHistChi2[kNtrackTypes];        //! chi2 distr., no PID
105   TH1F*   fHistChi2Good[kNtrackTypes];    //! chi2 distr., good tracks, no PID
106   TH1F*   fHistChi2Fake[kNtrackTypes];    //! chi2 distr., fake tracks, no PID
107
108   TH1F*   fHistNclu[kNtrackTypes];        //! ITS clu distr., no PID
109   TH1F*   fHistNcluGood[kNtrackTypes];    //! ITS clu distr., good tracks, no PID
110   TH1F*   fHistNcluFake[kNtrackTypes];    //! ITS clu distr., fake tracks, no PID
111
112   TH2F*   fHistdedxvsP2cls[kNtrackTypes]; //! dedx vs. p for tracks with 2 clus in SDD+SSD
113   TH2F*   fHistdedxvsP3cls[kNtrackTypes]; //! dedx vs. p for tracks with 3 clus in SDD+SSD
114   TH2F*   fHistdedxvsP4cls[kNtrackTypes]; //! dedx vs. p for tracks with 4 clus in SDD+SSD
115
116
117   TH1F*   fHistPtTPCITS[kNspecies];    //! pt distribution of TPC+ITS tracks
118   TH1F*   fHistPtITSsa[kNspecies];     //! pt distribution of ITSsa tracks
119   TH1F*   fHistPtITSpureSA[kNspecies]; //! pt distribution of ITS pure SA tracks
120
121   TH2F*   fHistEtaPhiTPCITS[kNspecies];    //! etaphi distr. of TPC+ITS tracks
122   TH2F*   fHistEtaPhiITSsa[kNspecies];     //! etaphi distr. of ITSsa tracks
123   TH2F*   fHistEtaPhiITSpureSA[kNspecies]; //! etaphi distr. of ITSpureSA tracks
124
125   TH2F*   fHistNcluTPCITS[kNspecies];    //! n. of clusters for TPC+ITS tracks vs. pt
126   TH2F*   fHistNcluITSsa[kNspecies];     //! n. of clusters for ITSsa tracks vs. pt
127   TH2F*   fHistNcluITSpureSA[kNspecies]; //! n. of clusters for ITSpureSA tracks vs. pt
128   TH2F*   fHistd0rphiITSpureSA[kNspecies]; //! d0z for ITSpureSA tracks vs. pt
129   TH2F*   fHistd0zITSpureSA[kNspecies]; //! d0z for ITSpureSA tracks vs. pt
130   TH2F*   fHistCluInLayTPCITS[kNspecies];    //! TPC+ITS tracks with cluster in layer 
131   TH2F*   fHistCluInLayITSsa[kNspecies];     //! ITSsa tracks with cluster in layer 
132   TH2F*   fHistCluInLayITSpureSA[kNspecies]; //! for ITSpureSA tracks with cluster in layer
133
134   TH2F*   fHistOuterLayITSpureSA[kNspecies]; //! outer layer with cluster vs. pt
135
136   TH2F*   fHistPtResid[kNspecies];         //! pt residuals (TPC) in pt bins
137   TH2F*   fHistPtRelResid[kNspecies];      //! pt relative residuals (TPC) in pt bins
138   TH2F*   fHistInvPtResid[kNspecies];      //! 1/pt residuals (TPC) in pt bins
139   TH2F*   fHistInvPtRelResid[kNspecies];   //! 1/pt relative resid. (TPC) in pt bins
140   TH2F*   fHistMCPtResid[kNspecies];       //! pt residuals (MC) vs. pt     
141   TH2F*   fHistMCPtRelResid[kNspecies];    //! pt relative residuals (MC) vs. pt     
142   TH2F*   fHistMCInvPtResid[kNspecies];    //! 1/pt residuals (MC) vs. pt
143   TH2F*   fHistMCInvPtRelResid[kNspecies]; //! 1/pt relative residulas (MC) vs. pt
144
145   TH2F*   fHistMCPhiResid; //! phi residuals in pt bins
146   TH2F*   fHistPhiResid;   //! phi residuals in pt bins
147   TNtuple* fNtupleTracks;  //! output ntuple
148
149   Int_t   fNPtBins;                  // number of Pt bins
150   Float_t fPtLimits[kMaxPtBins+1]; // Pt bin limits
151   Int_t   fMinITSpts;       // Minimum number of ITS points per track
152   Int_t   fMinSPDpts;       // Minimum number of SPD points per track
153   Int_t   fMinPtsforPid;    // Minimum number of SDD+SSD points per track
154   Int_t   fMinTPCpts;       // Minimum number of TPC points per track
155   Float_t fMaxITSChi2Clu;   // Maximum value of ITS chi2 per cluster
156   Bool_t  fRequirePoint[6]; // require point in given layer
157   Bool_t  fFillNtuple;      // flag to control fill of ntuple  
158   Bool_t  fReadMC;          // flag read/not-read MC truth info
159   Bool_t  fUseMCId;         // flag use/not-use MC identity for PID
160
161   ClassDef(AliAnalysisTaskITSsaTracks,3);  
162 };
163
164
165 #endif