]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITStrack.h
MevSim interfaced through AliGenerator, first commit (Sylwester Radomski et al.)
[u/mrichter/AliRoot.git] / ITS / AliITStrack.h
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();
23   Float_t &operator()(Int_t i) const {  return fvTrack(i);}
24   Float_t &operator()(Int_t r, Int_t c) const {return (*fmCovariance)(r,c);}
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;}
30   Double_t GetZ() const {return fvTrack(1);}
31   Double_t GetTgl() const {return fvTrack(3);}   
32   Double_t Getrtrack() const{return rtrack;}
33   Double_t Getphi()  const{return fvTrack(0);}
34   Double_t GetC() const {return fvTrack(4);}
35   Double_t GetD() const{return fvTrack(2);} 
36   Double_t GetPt() const {return 0.3*0.2/(fvTrack(4)*100.);}            
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;}
46   TMatrix &GetCMatrix() { return *fmCovariance;}
47   TVector &GetVector() { return fvTrack;}
48   void SetLayer(Int_t layer) { fLayer = layer;}
49   AliTPCtrack *GetTPCtrack() { return fTPCtrack;}
50
51   void PutCluster(Int_t layerc, TVector vecclust);
52   TVector GetLabTrack(Int_t lay);
53   void Search(TVector VecTotLabref, Long_t &labref, Int_t &freq); 
54   Float_t GetZclusterTrack(Int_t lay) {return ((Float_t) (*ClusterInTrack)(lay,2));}  
55   void GetClusters();
56   Int_t GetLabTPC() {return (*fTPCtrack).GetLabel();}
57   Int_t GetIdPoint(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,4));}
58   Int_t GetIdModule(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,5));}
59       
60
61   Int_t DoNotCross(Double_t rk) const;
62   Double_t argA(Double_t rk) const;
63   Double_t arga(Double_t rk) const;
64   Double_t argB(Double_t rk) const;
65   Double_t argC(Double_t rk) const;             
66   void  Propagation(Double_t rk) ;
67
68   Double_t GetSigmaphi() const{return ((Double_t)(*fmCovariance)(0,0));}
69   Double_t GetSigmaZ() const{return ((Double_t)(*fmCovariance)(1,1));}
70   void AddEL(AliITSRad *rl,Double_t signdE,  Bool_t flagtot, Double_t mass=0.1396); 
71   void AddMS(AliITSRad *rl);
72   void Correct(Double_t rk); 
73   void SetDv(Double_t x) {Dv=x;}
74   void SetZv(Double_t x) {Zv=x;}
75   Double_t GetDv() {return Dv;}
76   Double_t GetZv() {return Zv;}
77   void SetsigmaDv( Double_t x) {sigmaDv=x;}
78   void SetsigmaZv( Double_t x) {sigmaZv=x;} 
79   Double_t GetsigmaDv() {return sigmaDv;}
80   Double_t GetsigmaZv() {return sigmaZv;} 
81   void PrimaryTrack(AliITSRad *rl);
82   void Setd2(TVector &x) {for(Int_t i=0; i<6; i++){d2(i)=x(i);}}
83   void Settgl2(TVector &x) {for(Int_t i=0; i<6; i++){tgl2(i)=x(i);}}
84   void Setdtgl(TVector &x) {for(Int_t i=0; i<6; i++){dtgl(i)=x(i);}} 
85   TVector Getd2() { return d2;}
86   TVector Gettgl2() { return tgl2;}
87   TVector Getdtgl() { return dtgl;}
88   Double_t Getd2(Int_t i){return (Double_t)d2(i);}  
89   Double_t Gettgl2(Int_t i){return (Double_t)tgl2(i);}
90   Double_t Getdtgl(Int_t i){return (Double_t)dtgl(i);}
91   Double_t GetxoTPC() {return xoTPC;} 
92  // Double_t PhiDef(Double_t x, Double_t y); 
93  // Double_t  Getalphaprov(){return alphaprov;}  //provvirio                    
94 //////////////////////////////////////////////////////////////////////////////////////// 
95
96  private:  
97    
98   AliTPCtrack     *fTPCtrack;           // reference to TPC track
99    
100   TVector         fvTrack;              // state vector: |phi/z/D/tgl/C 
101   Double_t        rtrack;               // radius of courrent layer     
102   TMatrix         *fmCovariance;        // Covariance Matrix
103       
104   Double_t        fChi2;                // fChi^2 of track         
105   TObjArray       *flistCluster;        // list of clusters of the track
106   Int_t           fNumClustInTrack;     // total number of clusters
107   Long_t          flabel;               // label of the track
108   TVector         fVertex;              // vertex coordinates of the track
109   TVector         fErrorVertex;         // error on the vertex coordinates
110   Int_t           fLayer;               // current Layer of the track
111   TMatrix        *ClusterInTrack;       // matrix of clusters belonging to the  track
112                                         // row index = layer-1; 
113                                         // cols index = master coordinates of the clusters
114   
115   
116   Double_t          Dv;                 // radial impact parameter for vertex  constraint
117   Double_t          Zv;                 // longitudinal impact parameter for vertex constraint
118   Double_t          sigmaDv;            // sigma for Dv extraction
119   Double_t          sigmaZv;            // sigma for Zv extraction
120   TVector           d2;                 // C(2,2)  per primary track
121   TVector           tgl2;               // C(3,3)   per primary track
122   TVector           dtgl;               // C(2,3)     per primary track
123
124   Double_t          xoTPC;
125                    
126   //Double_t alphaprov;  //provviosorio            
127
128  
129   ClassDef(AliITStrack, 1)
130    
131 };
132
133 #endif
134