First version of the parallel TPC tracking (M.Ivanov)
[u/mrichter/AliRoot.git] / TPC / AliComplexCluster.h
CommitLineData
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$ */
7
8#include "TObject.h"
1c53abe2 9#include "TMath.h"
c9787763 10
11class AliComplexCluster : public TObject {
12public:
13 Int_t fTracks[3];//labels of overlapped tracks
14 Float_t fX ; //Y of cluster
15 Float_t fY ; //Z of cluster
16 Float_t fQ ; //Q of cluster (in ADC counts)
17 Float_t fSigmaX2; //Sigma Y square of cluster
18 Float_t fSigmaY2; //Sigma Z square of cluster
19 Float_t fSigmaXY; // XY moment
20 Float_t fArea; //area of cluster
21 Float_t fMax; //amplitude at maximum
22public:
23 AliComplexCluster() {
24 fTracks[0]=fTracks[1]=fTracks[2]=0;
1c53abe2 25 fX=fY=fQ=fSigmaX2=fSigmaY2=fSigmaXY=fArea=fMax=0.;
c9787763 26 }
27 virtual ~AliComplexCluster() {;}
28 Bool_t IsSortable() const;
5c84b1d4 29 Int_t Compare(const TObject *o) const;
c9787763 30 ClassDef(AliComplexCluster,1) // Cluster manager
31};
32
33class AliDigitCluster : public AliComplexCluster {
34public:
35 Int_t fNx; //number of accepted x bins
36 Int_t fNy; //number of accepted y bins
37 Float_t fMaxX; //maximum x bin
38 Float_t fMaxY; //maximum y bin
39public:
40 ClassDef(AliDigitCluster,1) // Tclusters
41};
42
1c53abe2 43
44
45class AliTPCTrackerPoint {
46 private:
47 Short_t fTX; // x position of the cluster in cm - 10 mum prec
48 Short_t fTZ; // current prolongation in Z in cm - 10 mum prec.
49 Short_t fTY; // current prolongation in Y in cm - 10 mum prec.
50 Char_t fTAngleZ; // angle
51 Char_t fTAngleY; // angle
52 public:
53 AliTPCTrackerPoint(){fTX=0; fTY=0; fTZ=0; fTAngleZ=0; fTAngleY=0;}
54 inline Float_t GetX() {return (fTX*0.01);}
55 inline Float_t GetZ() {return (fTZ*0.01);}
56 inline Float_t GetY() {return (fTY*0.01);}
57 inline Float_t GetAngleZ() {return (Float_t(fTAngleZ)*0.02);}
58 inline Float_t GetAngleY() {return (Float_t(fTAngleY)*0.02);}
59 //
60 void SetX(Float_t x){ fTX = Short_t(TMath::Nint(x*100.));}
61 void SetY(Float_t y){ fTY = Short_t(TMath::Nint(y*100.));}
62 void SetZ(Float_t z){ fTZ = Short_t(TMath::Nint(z*100.));}
63 void SetAngleZ(Float_t anglez) {fTAngleZ = Char_t(TMath::Nint(anglez*50.));}
64 void SetAngleY(Float_t angley) {fTAngleY = Char_t(TMath::Nint(angley*50.));}
65 //
66 public:
67 ClassDef(AliTPCTrackerPoint,1)
c9787763 68};
69
1c53abe2 70class AliTPCClusterPoint {
71 private:
72 Short_t fCZ; // current cluster position Z in cm - 100 mum precision
73 Short_t fCY; // current cluster position Y in cm - 100 mum precision
74 UChar_t fErrZ; // z error estimate - in mm - 50 mum precision
75 UChar_t fErrY; // y error estimate - in mm - 50 mum precision
76 UChar_t fSigmaZ; // shape Z - normalised shape - normaliziation 1 - precision 2 percent
77 UChar_t fSigmaY; // shape Y - normalised shape - normaliziation 1 - precision 2 percent
78 UShort_t fQ; // total charge in cluster
79 UShort_t fMax; // charge at maximum
80 Char_t fCType; // type of the cluster
81 public:
82 AliTPCClusterPoint(){fCZ=fCY=fSigmaZ=fSigmaY=fErrZ=fErrY=fQ=fMax=fCType=0;}
83 inline Float_t GetZ() {return (fCZ*0.01);}
84 inline Float_t GetY() {return (fCY*0.01);}
85 inline Float_t GetErrZ() {return (fErrZ*0.005);}
86 inline Float_t GetErrY() {return (fErrY*0.005);}
87 inline Float_t GetSigmaZ() {return (fSigmaZ*0.02);}
88 inline Float_t GetSigmaY() {return (fSigmaY*0.02);}
89 inline Int_t GetType() {return fCType;}
90 inline Int_t GetMax() {return fMax;}
91 inline Float_t GetQ() {return fQ;}
92
93 //
94 void SetY(Float_t y){ fCY = Short_t(TMath::Nint(y*100.));}
95 void SetZ(Float_t z){ fCZ = Short_t(TMath::Nint(z*100.));}
96 void SetErrZ(Float_t errz) {fErrZ = UChar_t(TMath::Nint(errz*200.));}
97 void SetErrY(Float_t erry) {fErrY = UChar_t(TMath::Nint(erry*200.));}
98 void SetSigmaZ(Float_t sigmaz) {fSigmaZ = UChar_t(TMath::Nint(sigmaz*50.));}
99 void SetSigmaY(Float_t sigmay) {fSigmaY = UChar_t(TMath::Nint(sigmay*50.));}
100 void SetQ(Float_t q) {fQ = UShort_t(q);}
101 void SetMax(Float_t max) {fMax = UShort_t(max);}
102 void SetType(Char_t type) {fCType = type;}
103
104 //
105 public:
106 ClassDef(AliTPCClusterPoint,1)
107};
108
109
110class AliTPCExactPoint : public TObject{
111 public:
112 AliTPCExactPoint(){fEZ=fEY=fEAngleZ=fEAngleY=fEAmp=fEPrim=fTrackID=0;}
113 Float_t fEZ; // current "exact" position according simulation
114 Float_t fEY; // current "exact" position according simulation
115 Float_t fEAngleZ; // angle Z
116 Float_t fEAngleY; // angle Y
117 Float_t fEAmp; // total charge deposited in row
118 Float_t fEPrim; // primary charge deposited in row
119 Int_t fTrackID; // id of the track
120 ClassDef(AliTPCExactPoint,1)
121};
122
123
124class AliTPCTrackPoint: public TObject{
125 public:
126 AliTPCTrackPoint(){ fIsShared = kFALSE;}
127 AliTPCClusterPoint & GetCPoint(){return fCPoint;}
128 AliTPCTrackerPoint & GetTPoint(){return fTPoint;}
129 public:
130 AliTPCClusterPoint fCPoint;
131 AliTPCTrackerPoint fTPoint;
132 Bool_t fIsShared; // indicate sharing of the point between several tracks
133 ClassDef(AliTPCTrackPoint,1)
134};
135
136
137class AliTPCTrackPointRef: public AliTPCTrackPoint{
138 public:
139 AliTPCExactPoint & GetExactPoint(){return fEPoint;}
140 AliTPCExactPoint & GetNearestPoint(){return fNPoint;}
141 public:
142 AliTPCExactPoint fEPoint; //exact point belonging to track
143 AliTPCExactPoint fNPoint; //nearest point
144 ClassDef(AliTPCTrackPointRef,1)
145};
146
147
c9787763 148#endif //ALICOMPLEXCLUSTER_H