]>
Commit | Line | Data |
---|---|---|
dce1757b | 1 | #ifndef ALIITSTRACK_H |
2 | #define ALIITSTRACK_H | |
3 | ||
4 | #include <TObject.h> | |
5 | #include <TMatrix.h> | |
6 | #include <TVector.h> | |
7 | ||
8 | #include "../TPC/AliTPCtrack.h" | |
9 | ||
10 | class TObjArray; | |
11 | // ITS Track Class | |
12 | //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it | |
13 | // | |
14 | class AliITStrack : public TObject { | |
15 | ||
16 | public: | |
17 | ||
18 | AliITStrack() ; | |
19 | AliITStrack(AliTPCtrack &obj); | |
20 | AliITStrack(const AliITStrack &cobj); | |
21 | AliITStrack &operator=(AliITStrack obj); | |
22 | ~AliITStrack(); | |
dce1757b | 23 | Int_t GetNumClust() { return fNumClustInTrack;} |
24 | void AddClustInTrack() { fNumClustInTrack++;} | |
25 | TObjArray *GetListOfCluster() { return flistCluster;} | |
26 | void SetChi2(Double_t chi2) { fChi2 = chi2;} | |
27 | Double_t GetChi2() { return fChi2;} | |
53e7090a | 28 | Double_t GetZ() const {return fX1;} |
29 | Double_t GetTgl() const {return fX3;} | |
dce1757b | 30 | Double_t Getrtrack() const{return rtrack;} |
53e7090a | 31 | Double_t Getphi() const{return fX0;} |
32 | Double_t GetC() const {return fX4;} | |
33 | Double_t GetD() const{return fX2;} | |
34 | Double_t GetPt() const {return 0.299792458*0.2/(fX4*100.);} | |
dce1757b | 35 | void SetVertex(TVector &vert) { for(Int_t i=0;i<3;i++) fVertex(i) = vert(i);} |
36 | void SetErrorVertex(TVector &evert) {for(Int_t i=0;i<3;i++) fErrorVertex(i) = evert(i);} | |
37 | ||
38 | void LmTPC(); // trasform state vector and covariance matrix from local TPC to master | |
39 | TVector GetVertex() { return fVertex;} | |
40 | TVector GetErrorVertex() { return fErrorVertex;} | |
41 | Long_t GetLabel() { return flabel;} | |
42 | void SetLabel(Long_t label) { flabel = label;} | |
43 | Int_t GetLayer() { return fLayer;} | |
53e7090a | 44 | |
45 | ||
46 | void PutCElements(Double_t C00, Double_t C10, Double_t C11, Double_t C20, Double_t C21, | |
47 | Double_t C22, Double_t C30, Double_t C31, Double_t C32, Double_t C33, Double_t C40, | |
48 | Double_t C41, Double_t C42, Double_t C43, Double_t C44); | |
49 | ||
50 | void GetCElements(Double_t &C00, Double_t &C10, Double_t &C11, Double_t &C20, Double_t &C21, | |
51 | Double_t &C22, Double_t &C30, Double_t &C31, Double_t &C32, Double_t &C33, Double_t &C40, | |
52 | Double_t &C41, Double_t &C42, Double_t &C43, Double_t &C44); | |
53 | ||
54 | void GetXElements(Double_t &X0, Double_t &X1, Double_t &X2, Double_t &X3, Double_t &X4); | |
55 | void PutXElements(Double_t X0, Double_t X1, Double_t X2, Double_t X3, Double_t X4); | |
56 | ||
dce1757b | 57 | void SetLayer(Int_t layer) { fLayer = layer;} |
58 | AliTPCtrack *GetTPCtrack() { return fTPCtrack;} | |
59 | ||
60 | void PutCluster(Int_t layerc, TVector vecclust); | |
61 | TVector GetLabTrack(Int_t lay); | |
62 | void Search(TVector VecTotLabref, Long_t &labref, Int_t &freq); | |
63 | Float_t GetZclusterTrack(Int_t lay) {return ((Float_t) (*ClusterInTrack)(lay,2));} | |
64 | void GetClusters(); | |
65 | Int_t GetLabTPC() {return (*fTPCtrack).GetLabel();} | |
66 | Int_t GetIdPoint(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,4));} | |
67 | Int_t GetIdModule(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,5));} | |
53e7090a | 68 | Float_t GetIdParticle(Int_t lay) {return (*ClusterInTrack)(lay,3);} |
dce1757b | 69 | |
70 | ||
71 | Int_t DoNotCross(Double_t rk) const; | |
72 | Double_t argA(Double_t rk) const; | |
73 | Double_t arga(Double_t rk) const; | |
74 | Double_t argB(Double_t rk) const; | |
75 | Double_t argC(Double_t rk) const; | |
76 | void Propagation(Double_t rk) ; | |
77 | ||
53e7090a | 78 | Double_t GetSigmaphi() const{return fC00;} |
79 | Double_t GetSigmaZ() const{return fC11;} | |
8af13b4b | 80 | void AddEL(AliITSRad *rl,Double_t signdE, Bool_t flagtot, Double_t mass=0.1396); |
81 | void AddMS(AliITSRad *rl); | |
dce1757b | 82 | void Correct(Double_t rk); |
83 | void SetDv(Double_t x) {Dv=x;} | |
84 | void SetZv(Double_t x) {Zv=x;} | |
85 | Double_t GetDv() {return Dv;} | |
86 | Double_t GetZv() {return Zv;} | |
87 | void SetsigmaDv( Double_t x) {sigmaDv=x;} | |
88 | void SetsigmaZv( Double_t x) {sigmaZv=x;} | |
89 | Double_t GetsigmaDv() {return sigmaDv;} | |
90 | Double_t GetsigmaZv() {return sigmaZv;} | |
8af13b4b | 91 | void PrimaryTrack(AliITSRad *rl); |
dce1757b | 92 | void Setd2(TVector &x) {for(Int_t i=0; i<6; i++){d2(i)=x(i);}} |
93 | void Settgl2(TVector &x) {for(Int_t i=0; i<6; i++){tgl2(i)=x(i);}} | |
94 | void Setdtgl(TVector &x) {for(Int_t i=0; i<6; i++){dtgl(i)=x(i);}} | |
95 | TVector Getd2() { return d2;} | |
96 | TVector Gettgl2() { return tgl2;} | |
97 | TVector Getdtgl() { return dtgl;} | |
98 | Double_t Getd2(Int_t i){return (Double_t)d2(i);} | |
99 | Double_t Gettgl2(Int_t i){return (Double_t)tgl2(i);} | |
100 | Double_t Getdtgl(Int_t i){return (Double_t)dtgl(i);} | |
101 | Double_t GetxoTPC() {return xoTPC;} | |
53e7090a | 102 | Double_t PhiDef(Double_t x, Double_t y); |
103 | //Int_t Getfreq(){return freq;} //provvisorio | |
104 | // void Setfreq(Int_t xfreq){freq=xfreq;} //provvisorio | |
dce1757b | 105 | //////////////////////////////////////////////////////////////////////////////////////// |
106 | ||
107 | private: | |
108 | ||
109 | AliTPCtrack *fTPCtrack; // reference to TPC track | |
53e7090a | 110 | |
111 | Double_t fX0,fX1,fX2,fX3,fX4; // state vector: |phi/z/D/tgl/C | |
dce1757b | 112 | Double_t rtrack; // radius of courrent layer |
53e7090a | 113 | |
114 | Double_t fC00, fC10, fC11, // Covariance Matrix | |
115 | fC20, fC21, fC22, // " " | |
116 | fC30, fC31, fC32, // " " | |
117 | fC33, fC40, fC41, // " " | |
118 | fC42, fC43, fC44; // " " | |
dce1757b | 119 | |
120 | Double_t fChi2; // fChi^2 of track | |
121 | TObjArray *flistCluster; // list of clusters of the track | |
122 | Int_t fNumClustInTrack; // total number of clusters | |
123 | Long_t flabel; // label of the track | |
124 | TVector fVertex; // vertex coordinates of the track | |
125 | TVector fErrorVertex; // error on the vertex coordinates | |
126 | Int_t fLayer; // current Layer of the track | |
127 | TMatrix *ClusterInTrack; // matrix of clusters belonging to the track | |
128 | // row index = layer-1; | |
129 | // cols index = master coordinates of the clusters | |
130 | ||
131 | ||
132 | Double_t Dv; // radial impact parameter for vertex constraint | |
133 | Double_t Zv; // longitudinal impact parameter for vertex constraint | |
134 | Double_t sigmaDv; // sigma for Dv extraction | |
135 | Double_t sigmaZv; // sigma for Zv extraction | |
136 | TVector d2; // C(2,2) per primary track | |
137 | TVector tgl2; // C(3,3) per primary track | |
138 | TVector dtgl; // C(2,3) per primary track | |
139 | ||
140 | Double_t xoTPC; | |
141 | ||
53e7090a | 142 | // Int_t freq; //provvisorio |
dce1757b | 143 | |
144 | ||
145 | ClassDef(AliITStrack, 1) | |
146 | ||
147 | }; | |
148 | ||
149 | #endif | |
150 |