]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITStrack.h
Remove some shielding to accomodate compensator magnet.
[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 class AliITSRad;
12
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();
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 fX1;}
31   Double_t GetTgl() const {return fX3;}   
32   Double_t Getrtrack() const{return rtrack;}
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.);}            
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   
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     
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));}
70   Float_t GetIdParticle(Int_t lay) {return (*ClusterInTrack)(lay,3);}
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
80   Double_t GetSigmaphi() const{return fC00;}
81   Double_t GetSigmaZ() const{return  fC11;}
82   void AddEL(AliITSRad *rl,Double_t signdE,  Bool_t flagtot, Double_t mass=0.1396); 
83   void AddMS(AliITSRad *rl);
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;} 
93   void PrimaryTrack(AliITSRad *rl);
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;} 
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                     
107 //////////////////////////////////////////////////////////////////////////////////////// 
108
109  private:  
110    
111   AliTPCtrack     *fTPCtrack;           // reference to TPC track
112
113   Double_t        fX0,fX1,fX2,fX3,fX4;  // state vector: |phi/z/D/tgl/C 
114   Double_t        rtrack;               // radius of courrent layer     
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;     //      "       "
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                    
144  // Int_t freq; //provvisorio      
145
146  
147   ClassDef(AliITStrack, 1)
148    
149 };
150
151 #endif
152