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