]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - TPC/AliTPCtrackerParam.h
Eff C++
[u/mrichter/AliRoot.git] / TPC / AliTPCtrackerParam.h
... / ...
CommitLineData
1#ifndef ALITPCTRACKERPARAM_H
2#define ALITPCTRACKERPARAM_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
4/* See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8
9/////////////////////////////////////////////////////////////////////////
10//
11// This class builds AliTPCtrack objects from generated tracks to feed
12// ITS tracking (V2). The AliTPCtrack is built from its first hit in
13// the TPC. The track is assigned a Kalman-like covariance matrix
14// depending on its pT and pseudorapidity and track parameters are
15// smeared according to this covariance matrix.
16// Output file contains sorted tracks, ready for matching with ITS.
17//
18// See implementation file for more details.
19//
20//
21// Origin: Andrea Dainese, Padova - e-mail: andrea.dainese@pd.infn.it
22// adapted to ESD output by: Marcello Lunardon, Padova
23/////////////////////////////////////////////////////////////////////////
24
25
26//----- Root headers ---------
27class TTree;
28#include <TMatrixD.h>
29//---- AliRoot headers -------
30#include "AliConfig.h"
31#include "AliTPCkineGrid.h"
32#include "AliTPCtrack.h"
33#include "AliESD.h"
34//----------------------------
35
36class AliTPC;
37
38class AliTPCtrackerParam:
39 public TObject
40{
41 public:
42
43 AliTPCtrackerParam(Int_t coll=0, Double_t Bz=0.4,
44 const char* evfoldname = AliConfig::GetDefaultEventFolderName());
45 virtual ~AliTPCtrackerParam();
46
47 // this function performs the parameterized tracking
48 //
49 AliTPCtrackerParam(const AliTPCtrackerParam& p);
50 //
51 Int_t Init();
52 Int_t BuildTPCtracks(AliESD* event);
53 // these functions are used to create a DB of cov. matrices,
54 // including regularization, efficiencies and dE/dx
55 void AllGeantTracks() { fSelAndSmear=kFALSE; return; }
56 void AnalyzedEdx(const Char_t *outName,Int_t pdg);
57 void AnalyzePulls(const Char_t *outName);
58 void AnalyzeResolutions(Int_t pdg);
59 void CompareTPCtracks(Int_t nEvents=1,
60 const Char_t *galiceName="galice.root",
61 const Char_t *trkGeaName="AliTPCtracksGeant.root",
62 const Char_t *trkKalName="AliTPCtracksSorted.root",
63 const Char_t *covmatName="CovMatrix.root",
64 const Char_t *tpceffasciiName="TPCeff.dat",
65 const Char_t *tpceffrootName="TPCeff.root");
66 void DrawEffs(const Char_t *inName,Int_t pdg=211);
67 void DrawPulls(const Char_t *inName,Int_t pdg=211,Int_t par=0);
68 void MakeDataBase();
69 void MergeEvents(Int_t evFirst=1,Int_t evLast=1);
70 void RegularizeCovMatrix(const Char_t *outName,Int_t pdg);
71
72
73 //********* Internal class definition *******
74 class AliTPCtrackParam : public AliTPCtrack {
75 public:
76 AliTPCtrackParam():AliTPCtrack(){}
77 AliTPCtrackParam(const AliTPCtrack &t):AliTPCtrack(t){}
78
79 void AssignMass(Double_t mass) {SetMass(mass); return;}
80
81 private:
82 };
83 //********* end of internal class ***********
84
85 //********* Internal class definition *******
86 class AliTPCseedGeant : public TObject {
87 public:
88 AliTPCseedGeant():TObject(),
89 fXg(0.),
90 fYg(0.),
91 fZg(0.),
92 fPx(0.),
93 fPy(0.),
94 fPz(0.),
95 fAlpha(0.),
96 fLabel(0),
97 fSector(0){}
98
99 AliTPCseedGeant(Double_t x=0.,Double_t y=0.,Double_t z=0.,
100 Double_t px=0.,Double_t py=0.,Double_t pz=0.,
101 Int_t lab=0);
102 Int_t GetLabel() const { return fLabel; }
103 Double_t GetAlpha() const { return fAlpha; }
104 Double_t GetXG() const { return fXg; }
105 Double_t GetYG() const { return fYg; }
106 Double_t GetZG() const { return fZg; }
107 Double_t GetXL() const
108 { return fXg*TMath::Cos(fAlpha)+fYg*TMath::Sin(fAlpha); }
109 Double_t GetYL() const
110 { return -fXg*TMath::Sin(fAlpha)+fYg*TMath::Cos(fAlpha); }
111 Double_t GetZL() const { return fZg; }
112 Double_t GetPx() const { return fPx; }
113 Double_t GetPy() const { return fPy; }
114 Double_t GetPz() const { return fPz; }
115 Double_t GetPt() const { return TMath::Sqrt(fPx*fPx+fPy*fPy); }
116 Double_t GetEta() const
117 { return -TMath::Log(TMath::Tan(0.25*TMath::Pi()-0.5*TMath::ATan(fPz/GetPt()))); }
118 void SetLabel(Int_t lab) { fLabel=lab; return; }
119 Bool_t InTPCAcceptance() const {
120 if(TMath::Abs(GetZL()+(244.-GetXL())*fPz/GetPt())>252.) return kFALSE;
121 return kTRUE;
122 }
123
124 private:
125 Double_t fXg; // global x of seed
126 Double_t fYg; // global y of seed
127 Double_t fZg; // global z of seed
128 Double_t fPx; // global px
129 Double_t fPy; // global py
130 Double_t fPz; // global pz
131 Double_t fAlpha; // alpha angle
132 Int_t fLabel; // track label
133 Int_t fSector; // TPC sector
134 };
135 //******* end of internal class ****************
136
137 private:
138 AliTPCtrackerParam & operator=(const AliTPCtrackerParam & );
139
140 TString fEvFolderName;//! name of data folder
141
142 Double_t fBz; // value of the z component of L3 field (Tesla)
143 Int_t fColl; // collision code (0: PbPb6000; 1: pp)
144 Bool_t fSelAndSmear; // if kFALSE returns GEANT tracks
145 // at TPC first hit
146 TString fDBfileName; // DataBase file name
147
148 AliTPCtrack fTrack; // current track
149
150 TTree *fCovTree; // tree with regularized cov matrices
151 // for the current track
152 TTree *fCovTreePi[30];
153 TTree *fCovTreeKa[30];
154 TTree *fCovTreePr[30];
155 TTree *fCovTreeEl[30];
156 TTree *fCovTreeMu[30];
157
158 AliTPCkineGrid *fDBgrid; // grid for the cov matrix look-up table
159 AliTPCkineGrid fDBgridPi; // " for pions
160 AliTPCkineGrid fDBgridKa; // " for kaons
161 AliTPCkineGrid fDBgridPr; // " for protons
162 AliTPCkineGrid fDBgridEl; // " for electrons
163 AliTPCkineGrid fDBgridMu; // " for muons
164
165 AliTPCkineGrid *fEff; // TPC efficiencies for the current track
166 AliTPCkineGrid fEffPi; // " pions
167 AliTPCkineGrid fEffKa; // " kaons
168 AliTPCkineGrid fEffPr; // " protons
169 AliTPCkineGrid fEffEl; // " electrons
170 AliTPCkineGrid fEffMu; // " muons
171
172 AliTPCkineGrid *fPulls; // pulls for the current track
173 AliTPCkineGrid fPullsPi[5]; // " pions
174 AliTPCkineGrid fPullsKa[5]; // " muons
175 AliTPCkineGrid fPullsPr[5]; // " protons
176 AliTPCkineGrid fPullsEl[5]; // " electrons
177 AliTPCkineGrid fPullsMu[5]; // " muons
178
179 TMatrixD *fRegPar; // regularization parameters for the curr. track
180 TMatrixD fRegParPi; // " for pions
181 TMatrixD fRegParKa; // " for kaons
182 TMatrixD fRegParPr; // " for protons
183 TMatrixD fRegParEl; // " for electrons
184 TMatrixD fRegParMu; // " for muons
185
186 AliTPCkineGrid *fdEdxMean; // dEdx mean for the current track
187 AliTPCkineGrid fdEdxMeanPi; // " pions
188 AliTPCkineGrid fdEdxMeanKa; // " kaons
189 AliTPCkineGrid fdEdxMeanPr; // " protons
190 AliTPCkineGrid fdEdxMeanEl; // " electrons
191 AliTPCkineGrid fdEdxMeanMu; // " muons
192
193 AliTPCkineGrid *fdEdxRMS; // dEdx RMS for the current track
194 AliTPCkineGrid fdEdxRMSPi; // " pions
195 AliTPCkineGrid fdEdxRMSKa; // " kaons
196 AliTPCkineGrid fdEdxRMSPr; // " protons
197 AliTPCkineGrid fdEdxRMSEl; // " electrons
198 AliTPCkineGrid fdEdxRMSMu; // " muons
199
200
201 void BuildTrack(AliTPCseedGeant *s,Int_t ch);
202 void CookdEdx(Double_t pt,Double_t eta);
203 void CookTrack(Double_t pt,Double_t eta);
204 TMatrixD GetSmearingMatrix(Double_t *cc, Double_t pt,Double_t eta) const;
205 void InitializeKineGrid(Option_t *which);
206 void MakeSeedsFromHits(AliTPC *tpc,TTree *th,TObjArray &seedArray) const;
207 void MakeSeedsFromRefs(TTree *ttr,
208 TObjArray &seedArray) const;
209 Int_t ReadAllData(const Char_t *inName);
210 Int_t ReadDBgrid(const Char_t *inName);
211 Int_t ReaddEdx(const Char_t *inName,Int_t pdg);
212 Int_t ReadEffs(const Char_t *inName);
213 Int_t ReadPulls(const Char_t *inName);
214 Int_t ReadRegParams(const Char_t *inName,Int_t pdg);
215 Int_t ReadCovTrees(const Char_t* inName);
216 Bool_t SelectedTrack(Double_t pt, Double_t eta) const;
217 void SetParticle(Int_t pdg);
218 void SmearTrack(Double_t *xx,Double_t *xxsm,TMatrixD cov) const;
219 Int_t WritedEdx(const Char_t *outName,Int_t pdg);
220 Int_t WriteEffs(const Char_t *outName);
221 Int_t WritePulls(const Char_t *outName);
222 Int_t WriteRegParams(const Char_t *outName,Int_t pdg);
223
224
225 ClassDef(AliTPCtrackerParam,1) // TPC tracking parameterization class
226};
227
228#endif
229
230
231
232
233
234
235
236
237
238
239
240
241