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