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 */
10 #include "AliTPCclusterMI.h"
13 class AliComplexCluster : public TObject {
16 friend class AliTPCClusterFinder;
17 friend class AliClusters;
20 fTracks[0]=fTracks[1]=fTracks[2]=0;
21 fX=fY=fQ=fSigmaX2=fSigmaY2=fSigmaXY=fArea=fMax=0.;
23 virtual ~AliComplexCluster() {;}
24 Bool_t IsSortable() const;
25 Int_t Compare(const TObject *o) const;
26 // the following getters are needed by HLT
27 // please dont remove... C. Loizides
28 Int_t GetTrack(Int_t i){return fTracks[i];} //labels of overlapped tracks
29 Float_t GetX(){return fX;}
30 Float_t GetY(){return fY;}
31 Float_t GetQ(){return fQ;}
32 Float_t GetSigmaX2(){return fSigmaX2;}
33 Float_t GetSigmaY2(){return fSigmaY2;}
34 Float_t GetSigmaXY(){return fSigmaXY;}
35 Float_t GetArea(){return fArea;}
36 Float_t GetMax(){return fMax;}
38 Int_t fTracks[3];//labels of overlapped tracks
39 Float_t fX ; //Y of cluster
40 Float_t fY ; //Z of cluster
41 Float_t fQ ; //Q of cluster (in ADC counts)
42 Float_t fSigmaX2; //Sigma Y square of cluster
43 Float_t fSigmaY2; //Sigma Z square of cluster
44 Float_t fSigmaXY; // XY moment
45 Float_t fArea; //area of cluster
46 Float_t fMax; //amplitude at maximum
48 ClassDef(AliComplexCluster,1)
54 class AliTPCTrackerPoint {
56 Char_t fIsShared; // indicate sharing of the point between several tracks
58 AliTPCTrackerPoint(){fTX=0; fTY=0; fTZ=0; fTAngleZ=0; fTAngleY=0; fIsShared = 0;}
59 Float_t GetX() const {return (fTX*0.01);}
60 Float_t GetZ() const {return (fTZ*0.01);}
61 Float_t GetY() const {return (fTY*0.01);}
62 Float_t GetAngleZ() const {return (Float_t(fTAngleZ)*0.02);}
63 Float_t GetAngleY() const {return (Float_t(fTAngleY)*0.02);}
65 void SetX(Float_t x) { fTX = Short_t(TMath::Nint(x*100.));}
66 void SetY(Float_t y) { fTY = Short_t(TMath::Nint(y*100.));}
67 void SetZ(Float_t z) { fTZ = Short_t(TMath::Nint(z*100.));}
68 void SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));}
69 void SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));}
70 Float_t GetSigmaZ() const {return (fSigmaZ*0.02);}
71 Float_t GetSigmaY() const {return (fSigmaY*0.02);}
72 Float_t GetErrZ() const {return (fErrZ*0.005);}
73 Float_t GetErrY() const {return (fErrY*0.005);}
74 void SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));}
75 void SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));}
77 void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
78 void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
81 Short_t fTX; // x position of the cluster in cm - 10 mum prec
82 Short_t fTZ; // current prolongation in Z in cm - 10 mum prec.
83 Short_t fTY; // current prolongation in Y in cm - 10 mum prec.
84 Char_t fTAngleZ; // angle
85 Char_t fTAngleY; // angle
86 UShort_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent
87 UShort_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent
88 UShort_t fErrZ; // z error estimate - in mm - 50 mum precision
89 UShort_t fErrY; // y error estimate - in mm - 50 mum precision
91 ClassDef(AliTPCTrackerPoint,1)
94 class AliTPCClusterPoint {
96 AliTPCClusterPoint(){fCZ=fCY=fSigmaZ=fSigmaY=fQ=fMax=fCType=0;}
97 inline Float_t GetZ() const {return (fCZ*0.01);}
98 inline Float_t GetY() const {return (fCY*0.01);}
99 inline Float_t GetSigmaZ() const {return (fSigmaZ*0.02);}
100 inline Float_t GetSigmaY() const {return (fSigmaY*0.02);}
101 inline Int_t GetType() const {return fCType;}
102 inline Int_t GetMax() const {return fMax;}
103 inline Float_t GetQ() const {return fQ;}
106 void SetY(Float_t y){ fCY = Short_t(TMath::Nint(y*100.));}
107 void SetZ(Float_t z){ fCZ = Short_t(TMath::Nint(z*100.));}
108 void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
109 void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
110 void SetQ(Float_t q) {fQ = UShort_t(q);}
111 void SetMax(Float_t max) {fMax = UShort_t(max);}
112 void SetType(Char_t type) {fCType = type;}
114 Short_t fCZ; // current cluster position Z in cm - 100 mum precision
115 Short_t fCY; // current cluster position Y in cm - 100 mum precision
116 UChar_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent
117 UChar_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent
118 UShort_t fQ; // total charge in cluster
119 UShort_t fMax; // charge at maximum
120 Char_t fCType; // type of the cluster
123 ClassDef(AliTPCClusterPoint,1)
127 class AliTPCExactPoint : public TObject{
129 AliTPCExactPoint(){fEZ=fEY=fEAngleZ=fEAngleY=fEAmp=fEPrim=fTrackID=0;}
131 Float_t fEZ; // current "exact" position according simulation
132 Float_t fEY; // current "exact" position according simulation
133 Float_t fEX; // x poistion of the cluster
134 Float_t fEAngleZ; // angle Z
135 Float_t fEAngleY; // angle Y
136 Float_t fEAmp; // total charge deposited in row
137 Float_t fEPrim; // primary charge deposited in row
138 Int_t fTrackID; // id of the track
141 friend class AliTPCtrackerMI;
142 ClassDef(AliTPCExactPoint,1)
146 class AliTPCTrackPoint: public TObject{
148 friend class AliTPCtrackerMI;
150 // AliTPCClusterPoint & GetCPoint(){return fCPoint;}
151 AliTPCTrackerPoint & GetTPoint(){return fTPoint;}
152 AliTPCclusterMI & GetCPoint(){return fCPoint;}
154 // AliTPCClusterPoint fCPoint;
156 AliTPCTrackerPoint fTPoint; // track point
157 AliTPCclusterMI fCPoint; // cluster point
158 ClassDef(AliTPCTrackPoint,1)
161 class AliTPCTrackPoint2: public AliTPCTrackPoint{
163 friend class AliTPCtrackerMI;
164 AliTPCTrackPoint2(){}
166 Float_t fGX; //global poition of the point
167 Float_t fGY; //global poition of the point
168 Float_t fGZ; //global poition of the point
170 Float_t fDY; //distortion of the clusters from the global helix (3 point interpolation)
171 Float_t fDZ; //distortion of the clusters from the global helix (3 point interpolation)
173 Float_t fDYU; //derivation in y up
174 Float_t fDYD; //distortion of y down
176 Float_t fDZU; //derivation in y up
177 Float_t fDZD; //distortion of y down
179 Float_t fDDY; //derivation in y,z up-down
180 Float_t fDDZ; //derivation in y,z up-down
182 Int_t fID; //id of the corresponding track
183 Int_t fLab; //MC label of the track
184 ClassDef(AliTPCTrackPoint2,1)
190 class AliTPCTrackPointRef: public AliTPCTrackPoint{
192 friend class AliTPCtrackerMI;
193 AliTPCExactPoint & GetExactPoint(){return fEPoint;}
194 AliTPCExactPoint & GetNearestPoint(){return fNPoint;}
196 AliTPCExactPoint fEPoint; //exact point belonging to track
197 AliTPCExactPoint fNPoint; //nearest point
198 ClassDef(AliTPCTrackPointRef,1)
202 #endif //ALICOMPLEXCLUSTER_H