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"
12 class AliComplexCluster : public TObject {
14 Int_t fTracks[3];//labels of overlapped tracks
15 Float_t fX ; //Y of cluster
16 Float_t fY ; //Z of cluster
17 Float_t fQ ; //Q of cluster (in ADC counts)
18 Float_t fSigmaX2; //Sigma Y square of cluster
19 Float_t fSigmaY2; //Sigma Z square of cluster
20 Float_t fSigmaXY; // XY moment
21 Float_t fArea; //area of cluster
22 Float_t fMax; //amplitude at maximum
25 fTracks[0]=fTracks[1]=fTracks[2]=0;
26 fX=fY=fQ=fSigmaX2=fSigmaY2=fSigmaXY=fArea=fMax=0.;
28 virtual ~AliComplexCluster() {;}
29 Bool_t IsSortable() const;
30 Int_t Compare(const TObject *o) const;
31 ClassDef(AliComplexCluster,1) // Cluster manager
34 class AliDigitCluster : public AliComplexCluster {
36 Int_t fNx; //number of accepted x bins
37 Int_t fNy; //number of accepted y bins
38 Float_t fMaxX; //maximum x bin
39 Float_t fMaxY; //maximum y bin
41 ClassDef(AliDigitCluster,1) // Tclusters
46 class AliTPCTrackerPoint {
48 Short_t fTX; // x position of the cluster in cm - 10 mum prec
49 Short_t fTZ; // current prolongation in Z in cm - 10 mum prec.
50 Short_t fTY; // current prolongation in Y in cm - 10 mum prec.
51 Char_t fTAngleZ; // angle
52 Char_t fTAngleY; // angle
53 UShort_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent
54 UShort_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent
55 UShort_t fErrZ; // z error estimate - in mm - 50 mum precision
56 UShort_t fErrY; // y error estimate - in mm - 50 mum precision
58 Char_t fIsShared; // indicate sharing of the point between several tracks
60 AliTPCTrackerPoint(){fTX=0; fTY=0; fTZ=0; fTAngleZ=0; fTAngleY=0; fIsShared = 0;}
61 inline Float_t GetX() {return (fTX*0.01);}
62 inline Float_t GetZ() {return (fTZ*0.01);}
63 inline Float_t GetY() {return (fTY*0.01);}
64 inline Float_t GetAngleZ() {return (Float_t(fTAngleZ)*0.02);}
65 inline Float_t GetAngleY() {return (Float_t(fTAngleY)*0.02);}
67 void SetX(Float_t x){ fTX = Short_t(TMath::Nint(x*100.));}
68 void SetY(Float_t y){ fTY = Short_t(TMath::Nint(y*100.));}
69 void SetZ(Float_t z){ fTZ = Short_t(TMath::Nint(z*100.));}
70 void SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));}
71 void SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));}
72 inline Float_t GetSigmaZ() {return (fSigmaZ*0.02);}
73 inline Float_t GetSigmaY() {return (fSigmaY*0.02);}
74 inline Float_t GetErrZ() {return (fErrZ*0.005);}
75 inline Float_t GetErrY() {return (fErrY*0.005);}
76 void SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));}
77 void SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));}
79 void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
80 void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
83 ClassDef(AliTPCTrackerPoint,1)
86 class AliTPCClusterPoint {
88 Short_t fCZ; // current cluster position Z in cm - 100 mum precision
89 Short_t fCY; // current cluster position Y in cm - 100 mum precision
90 UChar_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent
91 UChar_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent
92 UShort_t fQ; // total charge in cluster
93 UShort_t fMax; // charge at maximum
94 Char_t fCType; // type of the cluster
96 AliTPCClusterPoint(){fCZ=fCY=fSigmaZ=fSigmaY=fQ=fMax=fCType=0;}
97 inline Float_t GetZ() {return (fCZ*0.01);}
98 inline Float_t GetY() {return (fCY*0.01);}
99 inline Float_t GetSigmaZ() {return (fSigmaZ*0.02);}
100 inline Float_t GetSigmaY() {return (fSigmaY*0.02);}
101 inline Int_t GetType() {return fCType;}
102 inline Int_t GetMax() {return fMax;}
103 inline Float_t GetQ() {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;}
116 ClassDef(AliTPCClusterPoint,1)
120 class AliTPCExactPoint : public TObject{
122 AliTPCExactPoint(){fEZ=fEY=fEAngleZ=fEAngleY=fEAmp=fEPrim=fTrackID=0;}
123 Float_t fEZ; // current "exact" position according simulation
124 Float_t fEY; // current "exact" position according simulation
125 Float_t fEX; // x poistion of the cluster
126 Float_t fEAngleZ; // angle Z
127 Float_t fEAngleY; // angle Y
128 Float_t fEAmp; // total charge deposited in row
129 Float_t fEPrim; // primary charge deposited in row
130 Int_t fTrackID; // id of the track
133 ClassDef(AliTPCExactPoint,1)
137 class AliTPCTrackPoint: public TObject{
140 // AliTPCClusterPoint & GetCPoint(){return fCPoint;}
141 AliTPCTrackerPoint & GetTPoint(){return fTPoint;}
142 AliTPCclusterMI & GetCPoint(){return fCPoint;}
144 // AliTPCClusterPoint fCPoint;
146 AliTPCTrackerPoint fTPoint;
147 AliTPCclusterMI fCPoint;
148 ClassDef(AliTPCTrackPoint,1)
151 class AliTPCTrackPoint2: public AliTPCTrackPoint{
153 AliTPCTrackPoint2(){}
154 Float_t fGX; //global poition of the point
155 Float_t fGY; //global poition of the point
156 Float_t fGZ; //global poition of the point
158 Float_t fDY; //distortion of the clusters from the global helix (3 point interpolation)
159 Float_t fDZ; //distortion of the clusters from the global helix (3 point interpolation)
161 Float_t fDYU; //derivation in y up
162 Float_t fDYD; //distortion of y down
164 Float_t fDZU; //derivation in y up
165 Float_t fDZD; //distortion of y down
167 Float_t fDDY; //derivation in y,z up-down
168 Float_t fDDZ; //derivation in y,z up-down
170 Int_t fID; //id of the corresponding track
171 Int_t fLab; //MC label of the track
173 ClassDef(AliTPCTrackPoint2,1)
179 class AliTPCTrackPointRef: public AliTPCTrackPoint{
181 AliTPCExactPoint & GetExactPoint(){return fEPoint;}
182 AliTPCExactPoint & GetNearestPoint(){return fNPoint;}
184 AliTPCExactPoint fEPoint; //exact point belonging to track
185 AliTPCExactPoint fNPoint; //nearest point
186 ClassDef(AliTPCTrackPointRef,1)
190 #endif //ALICOMPLEXCLUSTER_H