fixed the tainted variables
[u/mrichter/AliRoot.git] / ITS / AliITSTrackV1.h
CommitLineData
aecdf013 1#ifndef ALIITSTRACKV1_H
2#define ALIITSTRACKV1_H
3// ITS Track Class
4//Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it
5// It contain all the usefull information for the track and the method to calculate, modify or extract them
6#include <TObject.h>
7#include <TMatrix.h>
8#include <TVector.h>
9
10#include "../TPC/AliTPCtrack.h"
11
12class TObjArray;
13class AliITSRad;
14
15class AliITSTrackV1 : public TObject {
16
17public:
18
19 AliITSTrackV1(); // default constructor
af50998a 20 //AliITSTrackV1(const char *opt); // Standard constructor
d0df5576 21 AliITSTrackV1(Double_t fieldfactor); // Standard constructor
af50998a 22 //AliITSTrackV1(AliTPCtrack &obj); // Standard constructor
23 AliITSTrackV1(AliTPCtrack &obj, Double_t fieldfactor); // Standard constructor
aecdf013 24 AliITSTrackV1(const AliITSTrackV1 &cobj); // copy constructor
25 AliITSTrackV1 &operator=(AliITSTrackV1 obj); // operator =
26 ~AliITSTrackV1(); // default destructor
27 Int_t GetNumClust() const { return fNumClustInTrack;} // gets the num of cluster in a track
28 void AddClustInTrack() { fNumClustInTrack++;} // adds a cluster in track
29 TObjArray *GetListOfCluster() const { return flistCluster;} // gets the list of cluster in the track
30 void SetChi2(Double_t chi2) { fChi2 = chi2;} // sets the chisquare value for the track
31 Double_t GetChi2() const { return fChi2;} // gets the chisquare value for the track
32 Double_t GetZ() const {return fX1;} // gets the Z value for the track
33 Double_t GetTgl() const {return fX3;} // gets the tgl value for the track
34 Double_t Getrtrack() const{return frtrack;} // gets the raius value for the current track
35 Double_t Getphi() const{return fX0;} // gets the phi value for the track
36 Double_t GetC() const {return fX4;} // gets the curvature value for the track
37 Double_t GetD() const{return fX2;} // gets the radial impact parameter for the track
874736b1 38 Double_t GetPt() const {return 0.299792458*0.2*fFieldFactor/(fX4*100.);} // gets the transvers momentum
def162f4 39 Float_t GetdEdx() const {return fdEdx;} //gets fdEdx // oggi
40
874736b1 41 // value for the track
aecdf013 42 void SetVertex(TVector &vert) { for(Int_t i=0;i<3;i++) fVertex(i) = vert(i);} // sets the vertex
43 // cohordinates
44 void SetErrorVertex(TVector &evert) {for(Int_t i=0;i<3;i++) fErrorVertex(i) = evert(i);} // sets the errors
45 //for vertex cohordinates
46
47 void LmTPC(); // trasform state vector and covariance matrix from local TPC to master
48 TVector GetVertex() const { return fVertex;}
49 TVector GetErrorVertex() const { return fErrorVertex;}
50 Long_t GetLabel() const { return flabel;}
51 void SetLabel(Long_t label) { flabel = label;}
52 Int_t GetLayer() const { return fLayer;}
53
54
55 void PutCElements(Double_t C00, Double_t C10, Double_t C11, Double_t C20, Double_t C21,
56 Double_t C22, Double_t C30, Double_t C31, Double_t C32, Double_t C33, Double_t C40,
57 Double_t C41, Double_t C42, Double_t C43, Double_t C44); // put elements of covariance matrix
58
59 void GetCElements(Double_t &C00, Double_t &C10, Double_t &C11, Double_t &C20, Double_t &C21,
60 Double_t &C22, Double_t &C30, Double_t &C31, Double_t &C32, Double_t &C33, Double_t &C40,
61 Double_t &C41, Double_t &C42, Double_t &C43, Double_t &C44) const; // get elements of covariance matrix
62
63 void GetXElements(Double_t &X0, Double_t &X1, Double_t &X2, Double_t &X3, Double_t &X4) const; // get elements
64 // of state vector
65 void PutXElements(Double_t X0, Double_t X1, Double_t X2, Double_t X3, Double_t X4); // put elements
61231d74 66
def162f4 67 void PutMass(Double_t mass) {fMass=mass;} // put the particle mass
68 Double_t GetMass() const {return fMass;} // get the particle mass // oggi // of state vector
69
aecdf013 70
71 void SetLayer(Int_t layer) { fLayer = layer;} // set current layer
72 AliTPCtrack *GetTPCtrack() const { return fTPCtrack;} // get hte TPC track
73
74 void PutCluster(Int_t layerc, TVector vecclust); // put information for clusters
75 TVector GetLabTrack(Int_t lay); // get the label of the track
76 void Search(TVector VecTotLabref, Long_t &labref, Int_t &freq); // determine the label and the frequency of
77 // it for the current track
78 Float_t GetZclusterTrack(Int_t lay) {return ((Float_t) (*fClusterInTrack)(lay,2));} // get the Z
79 //cohordinate of the cluster gelonging to the track for a given layer
80 void GetClusters(); // prints the clusters belonging to the current track
81 Int_t GetLabTPC() const {return (*fTPCtrack).GetLabel();} // get the TPC label for the current track
82 Int_t GetIdPoint(Int_t lay) {return ((Int_t) (*fClusterInTrack)(lay,4));} // get the label identifiing the
83 //point of the track
84 Int_t GetIdModule(Int_t lay) {return ((Int_t) (*fClusterInTrack)(lay,5));} // get the label identifiing the
85 // module of the track
86 Float_t GetIdParticle(Int_t lay) {return (*fClusterInTrack)(lay,3);} // get the label to identify
87 // the particle
88 Int_t DoNotCross(Double_t rk) const; // determine if the track cross a layer
89 Double_t ArgA(Double_t rk) const; // quantity usefull in propagation
90 Double_t Arga(Double_t rk) const; // quantity usefull in propagation
91 Double_t ArgB(Double_t rk) const; // quantity usefull in propagation
92 Double_t ArgC(Double_t rk) const; // quantity usefull in propagation
93 void Propagation(Double_t rk) ; // propagation of the track to a layer of radius rk
94
95 Double_t GetSigmaphi() const{return fC00;} // gets the phi variance
96 Double_t GetSigmaZ() const{return fC11;} // gets the Z variance
d0df5576 97 void AddEL(Double_t signdE, Bool_t flagtot, Double_t mass=0.1396); // adds the energy loss
088e0b8d 98 void AddMS(Double_t mass=0.1396); // modify the covariance matrix to take into account the multiple scattering
aecdf013 99 void Correct(Double_t rk); // correct the track to take into account the real detector geometry
100 void SetDv(Double_t x) {fDv=x;} // sets the radial impact parameter for vertex constraint
101 void SetZv(Double_t x) {fZv=x;} // sets longitudinal impact parameter for vertex constraint
102 Double_t GetDv() const {return fDv;} // gets the radial impact parameter for vertex constraint
103 Double_t GetZv() const {return fZv;} // gets longitudinal impact parameter for vertex constraint
104 void SetsigmaDv( Double_t x) {fsigmaDv=x;} // sets sigma for Dv extraction
105 void SetsigmaZv( Double_t x) {fsigmaZv=x;} // sets sigma for Zv extraction
70a9314b 106 void Setfnoclust() {fnoclust++;} //modify fnoclust
aecdf013 107 Double_t GetsigmaDv() const {return fsigmaDv;} // gets sigma for Dv extraction
108 Double_t GetsigmaZv() const {return fsigmaZv;} // gets sigma for Zv extraction
088e0b8d 109 void PrimaryTrack(); // calculation of part of covariance matrix for vertex constraint
aecdf013 110 void Setd2(TVector &x) {for(Int_t i=0; i<6; i++){fd2(i)=x(i);}} // sets the vector fd2
111 void Settgl2(TVector &x) {for(Int_t i=0; i<6; i++){ftgl2(i)=x(i);}} // sets the vector ftgl2
112 void Setdtgl(TVector &x) {for(Int_t i=0; i<6; i++){fdtgl(i)=x(i);}} // sets the vector fdtgl
113 TVector Getd2() const { return fd2;} // gets the vector fd2
114 TVector Gettgl2() const { return ftgl2;} // gets the vector ftgl2
64ab0d55 115 TVector Getdtgl() const { return fdtgl;} // gets the vector dtgl
aecdf013 116 Double_t Getd2(Int_t i){return (Double_t)fd2(i);} // gets the i element of the vector fd2
117 Double_t Gettgl2(Int_t i){return (Double_t)ftgl2(i);} // gets the i element of the vector tgl2
118 Double_t Getdtgl(Int_t i){return (Double_t)fdtgl(i);} // gets the i element of the vector fdtgl
70a9314b 119 //Double_t GetxoTPC() const {return fxoTPC;} // gets fxoTPC
120 Int_t Getfnoclust() const {return fnoclust;} //gets fnoclust
64ab0d55 121 Double_t GetPredChi2(Double_t m[2], Double_t sigma[2]) const; //get predicted chi2
def162f4 122 void Setfcor() //set correction for layer // oggi
123 {if(fLayer>=3) fcor[fLayer-3] = 1./TMath::Sqrt(1.+ fX3*fX3);} // oggi
124 Float_t Getfcor(Int_t i) {return fcor[i];} //return correction for layer // oggi
125
aecdf013 126
127////////////////////////////////////////////////////////////////////////////////////////
128
129 private:
130
131 AliTPCtrack *fTPCtrack; // reference to TPC track
132
133 Double_t fX0,fX1,fX2,fX3,fX4; // state vector: |phi/z/D/tgl/C
134 Double_t frtrack; // radius of courrent layer
135
136 Double_t fC00, fC10, fC11, // Covariance Matrix
137 fC20, fC21, fC22, // " "
138 fC30, fC31, fC32, // " "
139 fC33, fC40, fC41, // " "
140 fC42, fC43, fC44; // " "
141
142 Double_t fChi2; // fChi^2 of track
143 TObjArray *flistCluster; // list of clusters of the track
144 Int_t fNumClustInTrack; // total number of clusters
145 Long_t flabel; // label of the track
146 TVector fVertex; // vertex coordinates of the track
147 TVector fErrorVertex; // error on the vertex coordinates
148 Int_t fLayer; // current Layer of the track
149 TMatrix *fClusterInTrack; // matrix of clusters belonging to the track
150 // row index = layer-1;
151 // cols index = master coordinates of the clusters
a3894645 152
fd58b6ae 153 Double_t fFieldFactor; // magnetic field factor
a3894645 154 Double_t fDv; // radial impact parameter for vertex constraint
155 Double_t fZv; // longitudinal impact parameter for vertex constraint
156 Double_t fsigmaDv; // sigma for Dv extraction
157 Double_t fsigmaZv; // sigma for Zv extraction
158 TVector fd2; // C(2,2) for primary track
159 TVector ftgl2; // C(3,3) for primary track
160 TVector fdtgl; // C(2,3) for primary track
161
def162f4 162 Double_t fMass; // tracking particle mass
163
164 Float_t fdEdx ; // energy loss // oggi
165 Float_t fcor[4]; // corrections for dE/dx // oggi
166
70a9314b 167
61231d74 168 Int_t fnoclust; //nm of layers in which tracking doesn't add a cluster to the track
aecdf013 169
70a9314b 170
aecdf013 171
172
173 ClassDef(AliITSTrackV1, 1)
174
175};
176
177#endif
178