]>
Commit | Line | Data |
---|---|---|
c9787763 | 1 | #ifndef ALICOMPLEXCLUSTER_H |
2 | #define ALICOMPLEXCLUSTER_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7fc8a284 | 7 | // |
8 | // this is a class | |
9 | // AliComplexCluster | |
10 | // by M. Ivanov | |
11 | // | |
c9787763 | 12 | |
13 | #include "TObject.h" | |
1c53abe2 | 14 | #include "TMath.h" |
41cfdca1 | 15 | #include "AliTPCclusterMI.h" |
018a927a | 16 | // |
c9787763 | 17 | |
18 | class AliComplexCluster : public TObject { | |
835b3d81 | 19 | friend class AliTPC; |
20 | friend class AliTPCClusterFinder; | |
21 | friend class AliClusters; | |
7fc8a284 | 22 | public: |
835b3d81 | 23 | |
24 | AliComplexCluster() { | |
25 | fTracks[0]=fTracks[1]=fTracks[2]=0; | |
26 | fX=fY=fQ=fSigmaX2=fSigmaY2=fSigmaXY=fArea=fMax=0.; | |
27 | } | |
28 | virtual ~AliComplexCluster() {;} | |
29 | Bool_t IsSortable() const; | |
30 | Int_t Compare(const TObject *o) const; | |
75bb2a28 | 31 | // the following getters are needed by HLT |
32 | // please dont remove... C. Loizides | |
33 | Int_t GetTrack(Int_t i){return fTracks[i];} //labels of overlapped tracks | |
34 | Float_t GetX(){return fX;} | |
35 | Float_t GetY(){return fY;} | |
36 | Float_t GetQ(){return fQ;} | |
37 | Float_t GetSigmaX2(){return fSigmaX2;} | |
38 | Float_t GetSigmaY2(){return fSigmaY2;} | |
39 | Float_t GetSigmaXY(){return fSigmaXY;} | |
40 | Float_t GetArea(){return fArea;} | |
41 | Float_t GetMax(){return fMax;} | |
835b3d81 | 42 | private: |
c9787763 | 43 | Int_t fTracks[3];//labels of overlapped tracks |
44 | Float_t fX ; //Y of cluster | |
45 | Float_t fY ; //Z of cluster | |
46 | Float_t fQ ; //Q of cluster (in ADC counts) | |
47 | Float_t fSigmaX2; //Sigma Y square of cluster | |
48 | Float_t fSigmaY2; //Sigma Z square of cluster | |
49 | Float_t fSigmaXY; // XY moment | |
50 | Float_t fArea; //area of cluster | |
51 | Float_t fMax; //amplitude at maximum | |
835b3d81 | 52 | |
53 | ClassDef(AliComplexCluster,1) | |
54 | // Cluster manager | |
c9787763 | 55 | }; |
56 | ||
1c53abe2 | 57 | |
58 | ||
59 | class AliTPCTrackerPoint { | |
7fc8a284 | 60 | friend class AliTPCtrackerMI; |
61 | friend class AliTPCseed; | |
1c53abe2 | 62 | public: |
41cfdca1 | 63 | |
64 | AliTPCTrackerPoint(){fTX=0; fTY=0; fTZ=0; fTAngleZ=0; fTAngleY=0; fIsShared = 0;} | |
835b3d81 | 65 | Float_t GetX() const {return (fTX*0.01);} |
66 | Float_t GetZ() const {return (fTZ*0.01);} | |
67 | Float_t GetY() const {return (fTY*0.01);} | |
68 | Float_t GetAngleZ() const {return (Float_t(fTAngleZ)*0.02);} | |
69 | Float_t GetAngleY() const {return (Float_t(fTAngleY)*0.02);} | |
1c53abe2 | 70 | // |
835b3d81 | 71 | void SetX(Float_t x) { fTX = Short_t(TMath::Nint(x*100.));} |
72 | void SetY(Float_t y) { fTY = Short_t(TMath::Nint(y*100.));} | |
73 | void SetZ(Float_t z) { fTZ = Short_t(TMath::Nint(z*100.));} | |
1c53abe2 | 74 | void SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));} |
75 | void SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));} | |
835b3d81 | 76 | Float_t GetSigmaZ() const {return (fSigmaZ*0.02);} |
77 | Float_t GetSigmaY() const {return (fSigmaY*0.02);} | |
78 | Float_t GetErrZ() const {return (fErrZ*0.005);} | |
79 | Float_t GetErrY() const {return (fErrY*0.005);} | |
41cfdca1 | 80 | void SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));} |
81 | void SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));} | |
82 | ||
83 | void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));} | |
84 | void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));} | |
1c53abe2 | 85 | // |
835b3d81 | 86 | private: |
87 | Short_t fTX; // x position of the cluster in cm - 10 mum prec | |
88 | Short_t fTZ; // current prolongation in Z in cm - 10 mum prec. | |
89 | Short_t fTY; // current prolongation in Y in cm - 10 mum prec. | |
90 | Char_t fTAngleZ; // angle | |
91 | Char_t fTAngleY; // angle | |
92 | UShort_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent | |
93 | UShort_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent | |
94 | UShort_t fErrZ; // z error estimate - in mm - 50 mum precision | |
95 | UShort_t fErrY; // y error estimate - in mm - 50 mum precision | |
7fc8a284 | 96 | Char_t fIsShared; // indicate sharing of the point between several tracks |
835b3d81 | 97 | |
1c53abe2 | 98 | ClassDef(AliTPCTrackerPoint,1) |
c9787763 | 99 | }; |
100 | ||
1c53abe2 | 101 | class AliTPCClusterPoint { |
1c53abe2 | 102 | public: |
41cfdca1 | 103 | AliTPCClusterPoint(){fCZ=fCY=fSigmaZ=fSigmaY=fQ=fMax=fCType=0;} |
7fc8a284 | 104 | Float_t GetZ() const {return (fCZ*0.01);} |
105 | Float_t GetY() const {return (fCY*0.01);} | |
106 | Float_t GetSigmaZ() const {return (fSigmaZ*0.02);} | |
107 | Float_t GetSigmaY() const {return (fSigmaY*0.02);} | |
108 | Int_t GetType() const {return fCType;} | |
109 | Int_t GetMax() const {return fMax;} | |
110 | Float_t GetQ() const {return fQ;} | |
1c53abe2 | 111 | |
112 | // | |
113 | void SetY(Float_t y){ fCY = Short_t(TMath::Nint(y*100.));} | |
114 | void SetZ(Float_t z){ fCZ = Short_t(TMath::Nint(z*100.));} | |
1c53abe2 | 115 | void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));} |
116 | void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));} | |
117 | void SetQ(Float_t q) {fQ = UShort_t(q);} | |
118 | void SetMax(Float_t max) {fMax = UShort_t(max);} | |
119 | void SetType(Char_t type) {fCType = type;} | |
835b3d81 | 120 | private: |
121 | Short_t fCZ; // current cluster position Z in cm - 100 mum precision | |
122 | Short_t fCY; // current cluster position Y in cm - 100 mum precision | |
123 | UChar_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent | |
124 | UChar_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent | |
125 | UShort_t fQ; // total charge in cluster | |
126 | UShort_t fMax; // charge at maximum | |
127 | Char_t fCType; // type of the cluster | |
1c53abe2 | 128 | |
129 | // | |
1c53abe2 | 130 | ClassDef(AliTPCClusterPoint,1) |
131 | }; | |
132 | ||
133 | ||
134 | class AliTPCExactPoint : public TObject{ | |
7fc8a284 | 135 | friend class AliTPCtrackerMI; |
1c53abe2 | 136 | public: |
137 | AliTPCExactPoint(){fEZ=fEY=fEAngleZ=fEAngleY=fEAmp=fEPrim=fTrackID=0;} | |
835b3d81 | 138 | private: |
1c53abe2 | 139 | Float_t fEZ; // current "exact" position according simulation |
140 | Float_t fEY; // current "exact" position according simulation | |
41cfdca1 | 141 | Float_t fEX; // x poistion of the cluster |
1c53abe2 | 142 | Float_t fEAngleZ; // angle Z |
143 | Float_t fEAngleY; // angle Y | |
144 | Float_t fEAmp; // total charge deposited in row | |
145 | Float_t fEPrim; // primary charge deposited in row | |
146 | Int_t fTrackID; // id of the track | |
41cfdca1 | 147 | Int_t fRow; // row |
148 | Int_t fSec; //sector | |
1c53abe2 | 149 | ClassDef(AliTPCExactPoint,1) |
150 | }; | |
151 | ||
152 | ||
153 | class AliTPCTrackPoint: public TObject{ | |
835b3d81 | 154 | friend class AliTPCtrackerMI; |
7fc8a284 | 155 | public: |
41cfdca1 | 156 | AliTPCTrackPoint(){} |
157 | // AliTPCClusterPoint & GetCPoint(){return fCPoint;} | |
1c53abe2 | 158 | AliTPCTrackerPoint & GetTPoint(){return fTPoint;} |
41cfdca1 | 159 | AliTPCclusterMI & GetCPoint(){return fCPoint;} |
835b3d81 | 160 | private: |
41cfdca1 | 161 | // AliTPCClusterPoint fCPoint; |
162 | //Char_t fIsShared; | |
835b3d81 | 163 | AliTPCTrackerPoint fTPoint; // track point |
164 | AliTPCclusterMI fCPoint; // cluster point | |
1c53abe2 | 165 | ClassDef(AliTPCTrackPoint,1) |
166 | }; | |
167 | ||
41cfdca1 | 168 | class AliTPCTrackPoint2: public AliTPCTrackPoint{ |
835b3d81 | 169 | friend class AliTPCtrackerMI; |
7fc8a284 | 170 | public: |
41cfdca1 | 171 | AliTPCTrackPoint2(){} |
835b3d81 | 172 | private: |
41cfdca1 | 173 | Float_t fGX; //global poition of the point |
174 | Float_t fGY; //global poition of the point | |
175 | Float_t fGZ; //global poition of the point | |
176 | // | |
177 | Float_t fDY; //distortion of the clusters from the global helix (3 point interpolation) | |
178 | Float_t fDZ; //distortion of the clusters from the global helix (3 point interpolation) | |
179 | // | |
180 | Float_t fDYU; //derivation in y up | |
181 | Float_t fDYD; //distortion of y down | |
182 | // | |
183 | Float_t fDZU; //derivation in y up | |
184 | Float_t fDZD; //distortion of y down | |
185 | // | |
186 | Float_t fDDY; //derivation in y,z up-down | |
187 | Float_t fDDZ; //derivation in y,z up-down | |
188 | // | |
189 | Int_t fID; //id of the corresponding track | |
190 | Int_t fLab; //MC label of the track | |
41cfdca1 | 191 | ClassDef(AliTPCTrackPoint2,1) |
192 | }; | |
193 | ||
194 | ||
195 | ||
1c53abe2 | 196 | |
197 | class AliTPCTrackPointRef: public AliTPCTrackPoint{ | |
835b3d81 | 198 | friend class AliTPCtrackerMI; |
7fc8a284 | 199 | public: |
1c53abe2 | 200 | AliTPCExactPoint & GetExactPoint(){return fEPoint;} |
201 | AliTPCExactPoint & GetNearestPoint(){return fNPoint;} | |
835b3d81 | 202 | private: |
1c53abe2 | 203 | AliTPCExactPoint fEPoint; //exact point belonging to track |
204 | AliTPCExactPoint fNPoint; //nearest point | |
205 | ClassDef(AliTPCTrackPointRef,1) | |
206 | }; | |
207 | ||
208 | ||
c9787763 | 209 | #endif //ALICOMPLEXCLUSTER_H |