]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/ITS/AliAnalysisTaskITSsaTracks.h
ATO-17 - one more change - ULong_t not properly handled by the TTree::BuildIndex...
[u/mrichter/AliRoot.git] / PWGPP / ITS / AliAnalysisTaskITSsaTracks.h
CommitLineData
045571a6 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
17class TList;
2afdea69 18class TNtuple;
045571a6 19class TH1F;
20class TH2F;
21class TTree;
22class TString;
23class AliESDEvent;
24class AliESDfriend;
31a96e36 25class AliTriggerConfiguration;
045571a6 26
27#include "AliAnalysisTaskSE.h"
28
29class 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){
2afdea69 50 fMinPtsforPid=minp;
045571a6 51 }
a9130d15 52 void SetITSChi2Cut(Float_t maxchi2=2.5){
2afdea69 53 fMaxITSChi2Clu=maxchi2;
045571a6 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
2afdea69 69 void SetFillNtuple(Bool_t fill=kTRUE){
70 fFillNtuple=fill;
71 }
045571a6 72 void SetReadMC(Bool_t optMC=kTRUE){
73 fReadMC=optMC;
74 }
75 void SetUseMCtruthForPID(Bool_t opt=kTRUE){
76 fUseMCId=opt;
77 }
78
a9130d15 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 }
31a96e36 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 }
045571a6 94
95 private:
96 enum {kPion=0,kKaon,kProton,kNspecies};
2afdea69 97 enum {kTypeTPCITS=0, kTypeITSsa, kTypeITSpureSA, kNtrackTypes};
045571a6 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
2afdea69 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
519eed9b 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
2afdea69 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
519eed9b 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
2afdea69 131
132
045571a6 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
045571a6 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
045571a6 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
2afdea69 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
045571a6 166 Float_t fPtLimits[kMaxPtBins+1]; // Pt bin limits
2afdea69 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
a9130d15 172 Float_t fMinCentrality; // Centrality percentile lower lim
173 Float_t fMaxCentrality; // Centrality percentile upper lim
045571a6 174 Bool_t fRequirePoint[6]; // require point in given layer
2afdea69 175 Bool_t fFillNtuple; // flag to control fill of ntuple
045571a6 176 Bool_t fReadMC; // flag read/not-read MC truth info
177 Bool_t fUseMCId; // flag use/not-use MC identity for PID
a9130d15 178 Bool_t fUseCentrality; // flag use/not-use centrality selection
31a96e36 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
045571a6 183
31a96e36 184 ClassDef(AliAnalysisTaskITSsaTracks,5);
045571a6 185};
186
187
188#endif